您好,登錄后才能下訂單哦!
與數據類型相關的字段
CharField
作用:字符串字段, 用于較短的字符串.
參數:CharField 要求必須有一個參數 maxlength, 用于從數據庫層和Django校驗層限制該字段所允許的最大字符數.
IntegerField
作用:用于保存一個整數.
CommaSeparatedIntegerField
作用:用于存放逗號分隔的整數值. 類似 CharField, 必須要有maxlength參數.
FloatField
作用:一個浮點數,必須提供兩個參數:
參數:max_digits,總位數(不包括小數點和符號), decimal_places,小數位數.
示例1:要保存最大值為 999 (小數點后保存2位),你要這樣定義字段:
models.FloatField(..., max_digits=5, decimal_places=2)
示例2:要保存最大值一百萬(小數點后保存10位)的話,你要這樣定義:
models.FloatField(..., max_digits=19, decimal_places=10)
admin 用一個文本框(<input type="text">)表示該字段保存的數據
與時間相關的字段
DateField
一個日期字段. 共有下列額外的可選參數:
Argument 描述
auto_now 當對象被保存時,自動將該字段的值設置為當前時間.通常用于表示 "last-modified" 時間戳.
auto_now_add 當對象首次被創建時,自動將該字段的值設置為當前時間.通常用于表示對象創建時間.
(僅僅在admin中有意義...)
DateTimeField
一個日期時間字段. 類似 DateField 支持同樣的附加選項.
與布爾值相關的字段
BooleanField
A true/false field. admin用checkbox 來表示此類字段.
NullBooleanField
類似 BooleanField, 不過允許 NULL 作為其中一個選項. 推薦使用這個字段而不要用 BooleanField 加 null=True 選項
admin 用一個選擇框 <select> (三個可選擇的值: "Unknown", "Yes" 和 "No" ) 來表示這種字段數據.
與校驗相關的字段
IPAddressField
一個字符串形式的 IP 地址, (i.e. "24.124.1.30").
EmailField
一個帶有檢查Email合法性的 CharField,不接受 maxlength 參數.
XMLField
一個校驗值是否為合法XML的 TextField,必須提供參數: schema_path, 它是一個用來校驗文本的 RelaxNG schema #的文件系統路徑.
與上傳相關的字段
FileField
作用:
一個文件上傳字段,要求一個必須有的參數
參數:
upload_to, 一個用于保存上載文件的本地文件系統路徑. 這個路徑必須包含 strftime #formatting,
該格式將被上載文件的 date/time替換(so that uploaded files don't fill up the given directory).
說明:
admin 用一個<input type="file">部件表示該字段保存的數據(一個文件上傳部件) .
ImageField
作用: 類似FileField,不過要校驗上傳對象是否是一個合法圖片.
參數: 它有兩個可選參數:height_field和width_field, 如果提供這兩個參數, 則圖片將按提供的高度和寬度規格保存.
注意事項:
在一個model中使用FileField或ImageField需要以下步驟:
(1)在你的settings文件中,定義一個完整路徑給MEDIA_ROOT以便讓Django在此處保存上傳文件.
(出于性能考慮,這些文件并不保存到數據庫) 定義MEDIA_URL 作為該目錄的公共 URL.要確保該目錄對WEB服務器用戶帳號是可寫的.
(2)在你的model中添加FileField或ImageField,并確保定義了upload_to選項,以告訴 Django使用MEDIA_ROOT的哪個子目錄保存上傳文件.
你的數據庫中要保存的只是文件的路徑(相對于 MEDIA_ROOT).
出于習慣你一定很想使用 Django 提供的 get_<#fieldname>_url 函數.
舉例來說,如果你的 ImageField叫作 mug_shot, 你就可以在模板中以 {{ object.#get_mug_shot_url }} 這樣的方式得到圖像的絕對路徑.
不好分類的字段
AutoField
一個 IntegerField, 添加記錄時它會自動增長. 你通常不需要直接使用這個字段;
自定義一個主鍵:my_id=models.AutoField(primary_key=True)
如果你不指定主鍵的話,系統會自動添加一個主鍵字段到你的 model.
TextField
一個容量很大的文本字段.
admin 用一個 <textarea> (文本區域)表示該字段數據.(一個多行編輯框).
URLField
作用: 用于保存 URL, 若verify_exists參數為True(默認), 給定的 URL 會預先檢查是否存在( 即URL是否被有效裝入且沒有返回404響應).
admin 用一個 <input type="text"> 文本框表示該字段保存的數據(一個單行編輯框)
FilePathField
模型常用屬性
常用字段:
在 Django 中,定義了一些 Field 來與數據庫表中的字段類型來進行映射。以下將介紹那些常用的字段類型。會出現與上面重疊介紹。
AutoField:
映射到數據庫中是 int 類型,可以有自動增長的特性。一般不需要使用這個類型,如果不指定主鍵,那么模型會自動的生成一個叫做 id 的自動增長的主鍵。如果你想指定一個其他名字的并且具有自動增長的主鍵,使用 AutoField 也是可以的。
BigAutoField:
64位的整形,類似于 AutoField ,只不過是產生的數據的范圍是從 1-9223372036854775807 。
BooleanField:
在模型層面接收的是 True/False 。在數據庫層面是 tinyint 類型。如果沒有指定默認值,默認值是 None 。
CharField:
在數據庫層面是 varchar 類型。在 Python 層面就是普通的字符串。這個類型在使用的時候必須要指定最大的長度,也即必須要傳遞 max_length 這個關鍵字參數進去。
DateField:
日期類型。在 Python 中是 datetime.date 類型,可以記錄年月日。在映射到數據庫中也是 date 類型。使用這個 Field 可以傳遞以下幾個參數:
DateTimeField:
日期時間類型,類似于 DateField 。不僅僅可以存儲日期,還可以存儲時間。映射到數據庫中是 datetime 類型。這個 Field 也可以使用 auto_now 和 auto_now_add 兩個屬性。
TimeField:
時間類型。在數據庫中是 time 類型。在 Python 中是 datetime.time 類型。
EmailField:
類似于 CharField 。在數據庫底層也是一個 varchar 類型。最大長度是254個字符。
FileField:
用來存儲文件的。這個請參考后面的文件上傳章節部分。
ImageField:
用來存儲圖片文件的。這個請參考后面的圖片上傳章節部分。
FloatField:
浮點類型。映射到數據庫中是 float 類型。
IntegerField:
整形。值的區間是 -2147483648——2147483647 。
BigIntegerField:
大整形。值的區間是 -9223372036854775808——9223372036854775807 。
PositiveIntegerField:
正整形。值的區間是 0——2147483647 。
SmallIntegerField:
小整形。值的區間是 -32768——32767 。
PositiveSmallIntegerField:
正小整形。值的區間是 0——32767 。
TextField:
大量的文本類型。映射到數據庫中是longtext類型。
UUIDField:
只能存儲 uuid 格式的字符串。 uuid 是一個32位的全球唯一的字符串,一般用來作為主鍵。
URLField:
類似于 CharField ,只不過只能用來存儲 url 格式的字符串。并且默認的 max_length 是200。
Field的常用參數:
null:如果設置為 True , Django 將會在映射表的時候指定是否為空。默認是為 False 。在使用字符串相關的 Field (CharField/TextField)的時候,官方推薦盡量不要使用這個參數,也就是保持默認值 False 。因為 Django 在處理字符串相關的 Field 的時候,即使這個 Field 的 null=False ,如果你沒有給這個 Field 傳遞任何值,那么 Django 也會使用一個空的字符串 "" 來作為默認值存儲進去。因此如果再使用 null=True , Django 會產生兩種空值的情形(NULL或者空字符串)。如果想要在表單驗證的時候允許這個字符串為空,那么建議使用 blank=True 。如果你的 Field 是 BooleanField ,那么對應的可空的字段則為 NullBooleanField 。
blank:標識這個字段在表單驗證的時候是否可以為空。默認是False。這個和null是有區別的,null是一個純數據庫級別的。而blank是表單驗證級別的。db_column:這個字段在數據庫中的名字。如果沒有設置這個參數,那么將會使用模型中屬性的名字。default:默認值。可以為一個值,或者是一個函數,但是不支持lambda表達式。并且不支持列表/字典/集合等可變的數據結構。primary_key:是否為主鍵。默認是False。unique:在表中這個字段的值是否唯一。一般是設置手機號碼/郵箱等。更多Field參數請參考官方文檔: https://docs.djangoproject.com/zh-hans/2.0/ref/models/fields/ 模型中Meta配置:對于一些模型級別的配置。我們可以在模型中定義一個類,叫做Meta。然后在這個類中添加一些類屬性來控制模型的作用。比如我們想要在數據庫映射的時候使用自己指定的表名,而不是使用模型的名稱。那么我們可以在Meta類中添加一個db_table的屬性。示例代碼如下:
class Book(models.Model): name = models.CharField(max_length=20,null=False) desc = models.CharField(max_length=100,name='description',db_column="description1") class Meta: db_table = 'book_model'
以下將對Meta類中的一些常用配置進行解釋。db_table:這個模型映射到數據庫中的表名。如果沒有指定這個參數,那么在映射的時候將會使用模型名來作為默認的表名。ordering:設置在提取數據的排序方式。后面章節會講到如何查找數據。比如我想在查找數據的時候根據添加的時間排序,那么示例代碼如下:
class Book(models.Model): name = models.CharField(max_length=20,null=False) desc = models.CharField(max_length=100,name='description',db_column="description1") pub_date = models.DateTimeField(auto_now_add=True) class Meta: db_table = 'book_model' ordering = ['pub_date']
更多的配置后面會慢慢介紹到。 官方文檔: https://docs.djangoproject.com/en/2.0/ref/models/options/
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。