django模型類的meta是乙個內部類,它用於定義一些django模型類的行為特性。而可用的選項大致包含以下幾類
這個屬性是定義當前的模型是不是乙個抽象類。所謂抽象類是不會對應資料庫表的。一般我們用它來歸納一些公共屬性字段,然後繼承它的子類可以繼承這些字段。
如果abstract = true
這個model就是乙個抽象類
這個選型只在一種情況下使用,就是你的模型不在預設的應用程式包下的models.py
檔案中,這時候需要指定你這個模型是哪個應用程式的。
db_table
是指定自定義資料庫表明的。django
有一套預設的按照一定規則生成資料模型對應的資料庫表明。
options.db_table
定義該model在資料庫中的表名稱
db_table =
'students'
如果你想使用自定義的表名,可以通過以下該屬性
table_name =
'my_owner_table'
options.db_teblespace
定義這個model所使用的資料庫表空間。如果在專案的settin中定義那麼它會使用這個值
options.get_latest_by
在model中指定乙個datefield
或者datetimefield
。這個設定讓你在使用model
的manager
上的lastest
方法時,預設使用指定欄位來排序
options.managed
預設值為true
,這意味著django
可以使用syncdb
和reset
命令來建立或移除對應的資料庫。預設值為true
,如果你不希望這麼做,可以把manage
的值設定為false
這個選項一般用於多對多的關係中,它指向乙個關聯物件,就是說關聯物件找到這個物件後它是經過排序的。指定這個屬性後你會得到乙個get_***_order()
和set_***_order()
的方法,通過它們你可以設定或者回去排序的物件
這個欄位是告訴django模型物件返回的記錄結果集是按照哪個字段排序的。這是乙個字串的元組或列表,沒有乙個字串都是乙個欄位和用乙個可選的表明降序的』-『構成。當欄位名前面沒有』-'時,將預設使用公升序排列。使用'?'
將會隨機排列
ordering=
['order_date'
]# 按訂單公升序排列
ordering=
['-order_date'
]# 按訂單降序排列,-表示降序
ordering=
['?order_date'
]# 隨機排序,?表示隨機
ordering=
['-pub_date'
,'author'
]# 以pub_date為降序,在以author公升序排列
permissions
主要是為了在django admin
管理模組下使用的,如果你設定了這個屬性可以讓指定的方法許可權描述更清晰可讀。django
自動為每個設定了admin
的物件建立新增,刪除和修改的許可權。
permissions = (('can_deliver_pizzas','can deliver pizzas'))
這是為了實現**模型使用的,如果proxy = true
,表示model
是其父的**model
unique_together
這個選項用於:當你需要通過兩個字段保持唯一性時使用。比如假設你希望,乙個person的firstname和lastname兩者的組合必須是唯一的,那麼需要這樣設定:
unique_together = (("first_name", "last_name"),)
乙個manytomanyfield
不能包含在unique_together
中。如果你需要驗證關聯到manytomanyfield
欄位的唯一驗證,嘗試使用signal(訊號)
或者明確指定through
屬性。
verbose_name
的意思很簡單,就是給你的模型類起乙個更可讀的名字一般定義為中文,我們:
verbose_name =
"學校"
這個選項是指定,模型的複數形式是什麼,比如:
verbose_name_plural =
"學校"
或者verbose_name_plural = verbose_name
如果不指定django
會自動在模型名稱後加乙個』s』
Django模型之Meta選項詳解
django模型類的meta是乙個內部類,它用於定義一些django模型類的行為特性。而可用的選項大致包含以下幾類 這個屬性是定義當前的模型是不是乙個抽象類。所謂抽象類是不會對應資料庫表的。一般我們用它來歸納一些公共屬性字段,然後繼承它的子類可以繼承這些字段。options.abstract 如果a...
Django模型之Meta常見選項
這個欄位是告訴django模型物件返回的記錄結果集是按照哪個字段排序的。這是乙個字串的元組或列表,沒有乙個字串都是乙個欄位和用乙個可選的表明降序的 構成。當欄位名前面沒有 時,將預設使用公升序排列。使用 將會隨機排列 verbose name的意思很簡單,就是給你的模型類起乙個更可讀的名字一般定義為...
Django之Model的Meta選項詳解
django預設生成的表名 應用名小寫 模型類名小寫可以通過在模型類中定義meta類來修改表名 class department models.model 部門類 name models.charfield max length 20 create date models.datefield aut...