django_models_Meta字段詳解

Django模型類的Meta是一個內部類,它用於定義一些Django模型類的行爲特性。而可用的選項大體包含如下幾類數據庫

abstract

這個屬性是定義當前的模型是否是一個抽象類。所謂抽象類是不會對應數據庫表的。通常咱們用它來概括一些公共屬性字段,而後繼承它的子類能夠繼承這些字段。app

Options.abstract
若是abstract = True 這個model就是一個抽象類spa

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的值設置爲Falseget

order_with_respect_to

這個選項通常用於多對多的關係中,它指向一個關聯對象,就是說關聯對象找到這個對象後它是通過排序的。指定這個屬性後你會獲得一個get_xxx_order()和set_xxx_order()的方法,經過它們你能夠設置或者回去排序的對象it

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 

unique_together

unique_together這個選項用於:當你須要經過兩個字段保持惟一性時使用。好比假設你但願,一個Person的FirstName和LastName二者的組合必須是惟一的,那麼須要這樣設置:
unique_together = (("first_name", "last_name"),)
一個ManyToManyField不能包含在unique_together中。若是你須要驗證關聯到ManyToManyField字段的惟一驗證,嘗試使用signal(信號)或者明確指定through屬性。

verbose_name

verbose_name的意思很簡單,就是給你的模型類起一個更可讀的名字通常定義爲中文,咱們:
verbose_name = "學校"

verbose_name_plural

這個選項是指定,模型的複數形式是什麼,好比:verbose_name_plural = "學校"若是不指定Django會自動在模型名稱後加一個’s’

相關文章
相關標籤/搜索