Django模型類的Meta是一個内部類,它用于定義一些Django模型類的行為特性。而可用的選項大緻包含以下幾類
abstract
這個屬性是定義目前的模型是不是一個抽象類。所謂抽象類是不會對應資料庫表的。一般我們用它來歸納一些公共屬性字段,然後繼承它的子類可以繼承這些字段。
Options.abstract
如果abstract = True 這個model就是一個抽象類
app_label
這個選型隻在一種情況下使用,就是你的模型不在預設的應用程式包下的models.py檔案中,這時候需要指定你這個模型是哪個應用程式的。
Options.app_label
如果一個model定義在預設的models.py,例如如果你的app的models在myapp.models子子產品下,你必須定義app_label讓Django知道它屬于哪一個app
app_label = 'myapp'
db_table
db_table是指定自定義資料庫表明的。Django有一套預設的按照一定規則生成資料模型對應的資料庫表明。
Options.db_table
定義該model在資料庫中的表名稱
db_table = 'Students'
如果你想使用自定義的表名,可以通過以下該屬性
table_name = 'my_owner_table'
db_teblespace
Options.db_teblespace
定義這個model所使用的資料庫表空間。如果在項目的settin中定義那麼它會使用這個值
get_latest_by
Options.get_latest_by
在model中指定一個DateField或者DateTimeField。這個設定讓你在使用model的Manager上的lastest方法時,預設使用指定字段來排序
managed
Options.managed
預設值為True,這意味着Django可以使用syncdb和reset指令來建立或移除對應的資料庫。預設值為True,如果你不希望這麼做,可以把manage的值設定為False
order_with_respect_to
這個選項一般用于多對多的關系中,它指向一個關聯對象,就是說關聯對象找到這個對象後它是經過排序的。指定這個屬性後你會得到一個get_xxx_order()和set_xxx_order()的方法,通過它們你可以設定或者回去排序的對象
ordering
這個字段是告訴Django模型對象傳回的記錄結果集是按照哪個字段排序的。這是一個字元串的元組或清單,沒有一個字元串都是一個字段和用一個可選的表明降序的'-'構成。當字段名前面沒有'-'時,将預設使用升序排列。使用'?'将會随機排列
- ordering=['order_date'] # 按訂單升序排列
- ordering=['-order_date'] # 按訂單降序排列,-表示降序
- ordering=['?order_date'] # 随機排序,?表示随機
- ordering=['-pub_date','author'] # 以pub_date為降序,在以author升序排列
permissions
permissions主要是為了在Django Admin管理子產品下使用的,如果你設定了這個屬性可以讓指定的方法權限描述更清晰可讀。Django自動為每個設定了admin的對象建立添加,删除和修改的權限。
permissions = (('can_deliver_pizzas','Can deliver pizzas'))
proxy
這是為了實作代理模型使用的,如果proxy = True,表示model是其父的代理 model