Django中欄位選項的使用

2021-09-09 08:59:18 字數 4878 閱讀 7039

所有的模型欄位都可以接收一定數量的引數,比如charfield至少需要乙個max_length引數。下面的這些引數是所有欄位都可以使用的,並且是可選的。

說明

該值為true時,django在資料庫可以null儲存空值。預設值為false。對於儲存字串型別資料的字段,請盡量避免將此引數設為true,那樣會導致兩種『沒有資料』的情況,一種是null,另一種是『空字串』。

示例**

class

user

(models.model)

:# 介紹

text = models.charfield(max_length=

255, null=

true

)

說明

該引數用於定義當前欄位在資料表內的列名。如果未指定,django將使用欄位名作為列名

示例**

class

userinfo

(models.model)

:# 自定義主鍵

uid = models.autofield(

'主鍵'

, primary_key=

true

)# 使用者名稱

username = models.charfield(

'使用者名稱'

, db_column=

'name'

, max_length=64)

password = models.charfield(

'密碼'

, db_column=

'pwd'

, max_length=

64)

示例圖

說明該引數接收布林值。如果為true,資料庫將為該字段建立普通索引。

示例**

class

userinfo

(models.model)

: username = models.charfield(max_length=

64, db_index=

true

)

示例圖

說明欄位的預設值,可以是值或者乙個可呼叫物件。如果是可呼叫物件,那麼每次建立新物件時都會呼叫。設定的預設值不能是乙個可變物件,比如列表、集合等等。lambda匿名函式也不可用於default的呼叫物件,因為匿名函式不能被migrations序列化。

注意在某種原因不明的情況下將default設定為none,可能會引發intergyerror:not null constraint failed,即非空約束失敗異常,導致python manage.py migrate失敗,此時可將none改為false或其它的值,只要不是none就行

說明設為true時,資料庫中欄位建立唯一索引

注意:

示例**

class

userinfo

(models.model)

: username = models.charfield(

'使用者名稱'

, db_column=

'name'

, max_length=

64, unique=

true

)

示例圖

說明admin中顯示的欄位名稱。為字段設定乙個人類可讀,更加直觀的別名。

對於每乙個字段型別,除了foreignkeymanytomanyfieldonetoonefield這三個特殊的關係型別,其第一可選位置引數都是verbose_name。如果沒指定這個引數,django會利用欄位的屬性名自動建立它,並將下劃線轉換為空格。

示例**

class

userinfo

(models.model)

:# 自定義主鍵

uid = models.autofield(

'主鍵'

, primary_key=

true

)# 使用者名稱

username = models.charfield(

'使用者名稱'

, max_length=64)

password = models.charfield(

'密碼'

, max_length=

32)

說明

admin中顯示選擇框的內容,用不變動的資料放在記憶體中從而避免跨表操作

用於頁面上的選擇框標籤,需要先提供乙個二維的二元元組,第乙個元素表示存在資料庫內真實的值,第二個表示頁面上顯示的具體內容。在瀏覽器頁面上將顯示第二個元素的值

示例**

class

userinfo

(models.model)

: ***_choices =((

'1', u'男'),

('2'

, u'女'),

) *** = models.charfield(max_length=

1, choices=***_choices)

說明

admin中是否允許使用者輸入為空

true時,字段可以為空。預設false。和null引數不同的是,null是純資料庫層面的,而blank是驗證相關的,它與表單驗證是否允許輸入框內為空有關,與資料庫無關。所以要小心乙個null為false,blank為true的字段接收到乙個空值可能會出bug或異常。

示例**

class

userinfo

(models.model)

:# 自定義主鍵

uid = models.autofield(

'主鍵'

, primary_key=

true

)# 使用者名稱

username = models.charfield(

'使用者名稱'

, max_length=64)

password = models.charfield(

'密碼'

, max_length=

32)

說明

admin中是否可以編輯

示例**

class

userinfo

(models.model)

: create_date = models.datetimefield(

'註冊時間'

, auto_now_add=

true

, editable=

true

)

說明

admin中該字段的提示資訊

示例**

class

userinfo

(models.model)

: create_date = models.datetimefield(

'註冊時間'

, auto_now_add=

true

, editable=

true

,help_text=

'填寫註冊時間'

)

說明

自定義錯誤資訊(字典型別),從而定製想要顯示的錯誤資訊

字典健:null, blank, invalid, invalid_choice, unique等

示例**

說明

自定義錯誤驗證(列表型別),從而定製想要的驗證規則

示例**

from django.core.validators import regexvalidator

from django.core.validators import emailvalidator, urlvalidator, decimalvalidator, maxlengthvalidator, minlengthvalidator, maxvaluevalidator, minvaluevalidator

test = models.charfield(

max_length=32,

error_messages=

, validators=

[ regexvalidator(regex=

'\d+'

, message=

'錯誤了'

, code=

'error1'),

regexvalidator(regex=

'\d+'

, message=

'又錯誤了'

, code=

'error2'),

emailvalidator(message=

'又錯誤了'

, code=

'error3'),

])

django模型 欄位和選項

一 常用字段 1 字段型別 使用時需要引入django.db.models包,字段型別如下 autofield 自動增長的integerfield,通常不用指定,不指定時django會自動建立屬性名為id的自動增長屬性 booleanfield 布林字段,值為true或false nullboole...

Django框架 模型層 字段屬性和選項

django根據屬性的型別確定以下資訊 django會為表建立自動增長的主鍵列,每個模型只能有乙個主鍵列,如果使用選項設定某屬性為主鍵列後django不會再建立自動增長的主鍵列。預設建立的主鍵列屬性為id,可以使用pk代替,pk全拼為primary key。注意 pk是主鍵的別名,若主鍵名為id2,...

django中的字段型別

from charfield.max length 字元的最大長度,django會根據這個引數在資料庫層和校驗層限制該字段所允許的最大字元數。auto now 當物件被儲存時,自動將該字段的值設定為當前時間.通常用於表示 last modified 時間戳 auto now add 當物件首次被建立...