Django model 字段類型及選項解析


轉載自:https://blog.csdn.net/JamesPaul32/article/details/80775211

model field 類型

1、AutoField() 
自增的IntegerField,通常不用自己設置,若沒有設置主鍵,Django會自動添加它為主鍵字段,Django會自動給每張表添加一個自增的primary key。

2、BigIntegerField
64位整數, -9223372036854775808 到 9223372036854775807。默認的顯示widget 是 TextInput.

3、BinaryField ( Django 1.6 版本新增 )
存儲二進制數據。不能使用 filter 函數獲得 QuerySet

4、BooleanField()
True/False,默認的widget 是 CheckboxInput。 
如果需要置空,則必須用 NullBooleanField 代替。 
Django 1.6 修改:BooleanField 的默認值 由 False 改為 None,在 default 屬性未設置的情況下。

5、CharField(max_length=none[, **options])
儲存字符串。必須有 max_length 參數指定長度。作用於數據層級和django數據驗證層級。默認的form widget 是 TextInput如果字符串巨長,推薦使用 TextField。

6、CommaSeparatedIntegerField(max_length=none[, **options])
存放由逗號間隔的整數序列。必須有 max_length 參數。

7、DateField
日期,與python里的datetime.date 實例同。有以下幾個可選的選項,均為bool類型: 
DateField.auto_now: 每次執行 save 操作的時候自動記錄當前時間,常作為最近一次修改的時間 使用。注意:總是在執行save 操作的時候執行,無法覆蓋。 
DateField.auto_now_add: 第一次創建的時候添加當前時間。常作為 創建時間 使用。注意:每次create 都會調用。 
默認的form widget 是 TextInput。 
注意:設置auto_now 或者 auto_now_add 為 True 會導致當前自動擁有 editable=False 和 blank = True 設置。

8、DateTimeField([auto_now=False, auto_now_add=False, **options])
日期+時間。與python里的 datetime.datetime 實例同。常用附加選項和DateField一樣。 
默認 form widget 是一個 TextInput

9、DecimalField(max_digits=None,decimal_places=None[, **options])
用decimal實例表示固定精度的十進制數的字段,有兩個必須參數,max_digits數字允許的最大位數,decimal_places小數的最大位數。django后台用表示該字段, 通常用來表示金額

10、EmailField([maxlength=75, **options])
在 CharField 基礎上附加了 郵件地址合法性驗證。不需要強制設定 max_length 
注意:當前默認設置 max_length 是 75,雖然已經不符合標准,但未了向前兼容,未修改。

11、FileField(upload_to=None[, max_length=100, **options])
文件上傳字段。不支持 primary_key 和 unique 選項。否則會報 TypeError 異常。 
必須設置 FileField.upload_to 選項,這個是 本地文件系統路徑,附加在 MEDIA_ROOT 設置的后邊,也就是 MEDIA_ROOT 下的子目錄相對路徑。默認的form widget 是 FileInput。

12、FloatField
與 python 里的 float 實例相同,默認的 form widget 是 TextInput。 
雖然 FloatField 與 DecimalField 都是表示實數,但卻是不同的表現形式,FloatField 用的是 python d float 類型,但是 DecimalField 用的卻是 Decimal 類型。區別可見:http://docs.python.org/2.7/library/decimal.html#decimal

13、ImageField([upload_to=None, height_field=None, width_field=None, max_length=100, **options])
在 FileField 基礎上加上是否是合法圖片驗證功能的一個類型。 
除了 FileField 有的屬性外,ImageField 另有 height 和 width 屬性。 
注意:需要安裝 PIL 或者 Pillow 模塊。在數據庫中同樣表現為 varchar(100),可通過 max_length 改大小。

14、IntegerField
整數,默認的form widget 是 TextInput。

15、IPAddressField
IP地址,字符串類型,如 127.0.0.1。默認 form widget 是 TextInput。

16、GenericIPAddressField
ip v4和ip v6地址表示,ipv6遵循RFC 4291section 2.2,

17、NullBooleanField
可以包含空值的布爾類型,相當於設置了null=True的BooleanField。

18、PositiveSmallIntegerField
正短整數或0類型,類似於PositiveIntegerField,取值范圍依賴於數據庫特性,[0 ,32767]的取值范圍對Django所支持的數據庫都是安全的。

19、PositiveIntegerField
正整數或0類型,取值范圍為[0 ,2147483647]

20、SlugField
只能包含字母,數字,下划線和連字符的字符串,通常被用於URLs表示。可選參數max_length=50,prepopulate_from用於指示在admin表單中的可選值。db_index,默認為True。

21.SmallIntegerField
小整數字段,類似於IntegerField,取值范圍依賴於數據庫特性,[-32768 ,32767]的取值范圍對Django所支持的數據庫都是安全的。

22、TextField
大文本,巨長的文本。默認的 form widget 是 Textarea。

23、TimeField
時間,對應Python的datetime.time

24、URLField
加了 URL 合法性驗證的 CharField。 
默認的 form widget 是 TextInput。 
默認max_length=200,可修改。

25、FilePathField(path=None[, match=None, recursive=False, max_length=100, options])
他是一個CharField,用來選擇文件系統下某個目錄里面的某些文件,它有三個專有參數,只有path是必須的。path是一個目錄的絕對路徑,match是一個正則表達式字符串,用來過濾文件名稱;recursive為bool,指定是否包含path下的子目錄。

注意,如果使用 MySQLdb 1.2.1p2 和 utf-8_bin 編碼,會有一些問題https://docs.djangoproject.com/en/dev/ref/databases/#mysql-collation。具體問題未分析,可自行避開。

Field 選項

null 
boolean 值,缺省設置為false。通常不將其用於字符型字段上,比如CharField,TextField上。字符型字段如果沒有值會返回空字符串。

blank
boolean 值,該字段是否可以為空。如果為假,則必須有值。

choices
元組值,一個用來選擇值的2維元組。第一個值是實際存儲的值,第二個用來方便進行選擇。如SEX_CHOICES=((‘F’,’Female’),(‘M’,’Male’),)

db_column
string 值,指定當前列在數據庫中的名字,不設置,將自動采用model字段名;

db_index
boolean 值,如果為True將為此字段創建索引;

default
給當前字段設定的缺省值,可以是一個具體值,也可以是一個可調用的對象,如果是可調用的對象將每次產生一個新的對象;

editable
boolean 值,如果為假,admin模式下將不能改寫。缺省為真;

error_messages
字典,設置默認的出錯信息,可覆蓋的key 有 null, blank, invalid, invalid_choice, 和 unique。

help_text
admin模式下幫助文檔 
form widget 內顯示幫助文本。

primary_key
設置主鍵,如果沒有設置django創建表時會自動加上:id = meta.AutoField(‘ID’, primary_key=True) 
primary_key=True implies blank=False, null=False and unique=True. Only one primary key is allowed on an object.

radio_admin
用於 admin 模式下將 select 轉換為 radio 顯示。只用於 ForeignKey 或者設置了choices

unique
boolean值,數據是否進行唯一性驗證;

unique_for_date
字符串類型,值指向一個DateTimeField 或者 一個 DateField的列名稱。日期唯一,如下例中系統將不允許title和pub_date兩個都相同的數據重復出現 
title = meta.CharField( maxlength=30, unique_for_date=’pub_date’ )

unique_for_month / unique_for_year
用法同上

verbose_name
string類型。更人性化的列名。

validators
有效性檢查。無效則拋出 django.core.validators.ValidationError 異常。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM