Django 模型類的Meta是一個內部類,它用于定義一些Django模型類的行為特性。下面對此作一總結:
abstract
這個屬性是定義當前的模型類是不是一個抽象類。所謂抽象類是不會相應數據庫表的。一般我們用它來歸納一些公共屬性字段,然后繼承它的子類能夠繼承這些字段。app_label
app_label這個選項僅僅在一種情況下使用,就是你的模型類不在默認的應用程序包下的models.py
文件里。這時候你須要指定你這個模型類是那個應用程序的。比方你在其它地方寫了一個模型類,
而這個模型類是屬于myapp的,那么你這是須要指定為:
app_label = 'myapp'db_table
db_table是用于指定自己定義數據庫表名的。
Django有一套默認的依照一定規則生成數據模型相應的數據庫表名。假設你想使用自己定義的表
名。就通過這個屬性指定,比方:
table_name='my_owner_table'db_tablespace
有些數據庫有數據庫表空間,比方Oracle。你能夠通過db_tablespace來指定這個模型相應的數據
庫表放在哪個數據庫表空間。get_latest_by
因為Django的管理方法中有個lastest()方法,就是得到近期一行記錄。假設你的數據模型中有
DateField 或 DateTimeField 類型的字段。你能夠通過這個選項來指定lastest()是依照哪個字段進行
選取的。managed
因為Django會自己主動依據模型類生成映射的數據庫表。假設你不希望Django這么做。能夠把
managed的值設置為False。-
order_with_respect_to
這個選項一般用于多對多的關系中,它指向一個關聯對象。就是
說關聯對象找到這個對象后它是經過排序的。指定這個屬性后你會得到一個get_XXX_order()和
set_XXX_order()的方法,通過它們你能夠設置或者回去排序的對象。 -
ordering
這個字段是告訴Django模型對象返回的記錄結果集是依照哪個字段排序的。比方以下的代碼:
ordering=['order_date'] # 按訂單升序排列
ordering=['-order_date'] # 按訂單降序排列,-表示降序
ordering=['?order_date'] # 隨機排序。?表示隨機 permissions
permissions主要是為了在Django Admin管理模塊下使用的。假設你設置了這個屬性能夠讓指定的
方法權限描寫敘述更清晰可讀。proxy
這是為了實現代理模型使用的。(本人不是特別懂····所以就先不說了)-
unique_together
unique_together這個選項用于:當你須要通過兩個字段保持唯一性時使用。
比方如果你希望,一個Person的FirstName和LastName兩者的組合必須是唯一的,那么須要這樣
設置:
unique_together = (("first_name", "last_name"),) verbose_name
verbose_name的意思非常簡單。就是給你的模型類起一個更可讀的名字:
verbose_name = "name"verbose_name_plural
這個選項是指定模型的復數形式是什么。