Django model中的內嵌類(Class Meta)

Django model中的內嵌類(Class Meta)python

內嵌類的做用:經過內嵌類 class Meta 能夠爲你的 model 定義 「元數據」git

class Book(models.Model):
    name = models.CharField(max_length=64)
    price = models.DecimalField(max_digits=5, decimal_place=2)
    ...
    # 定義內嵌類 class Meta
    class Meta:
        db_table = 'my_book'
		verbose_name = '書籍'
        verbose_name_pulral = verbose_name
        ...

注:定義model 元數據指:不是一個字段的任何數據,以下是一些可能用到的元數據數據庫

​ 」「「 沒有一個選項是必需的. 是否添加 class Meta 到你的 model 徹底是可選的 」」「app

app_label函數

​ app_label這個選項只在一種狀況下使用,就是你的模型類不在默認的應用(app)下的models.py文件中,這個時候就須要指定當前的 model 類 是哪一個應用程序的。 如:你在其它地方寫了一個模型類,而這個模型類對應的應用是 app01,則這個時候須要指定:spa

app_label = 'app01'

db_tablecode

​ db_table就是用於自定義數據庫表名對象

db_table = 'my_book'

db_tablespace排序

​ 表空間 ---- 有些數據庫有數據庫表空間,如:Oracle。能夠經過 db_tablespace來指定這個模型類對應的數據庫表放在哪一個數據庫表空間生命週期

get_latest_by

​ 因爲Django的管理方法中有個lastest()方法,就是獲得最近一行記錄。若是你的數據模型中有 DateField 或 DateTimeField 類型的字段,你能夠經過這個選項來指定lastest()是按照哪一個字段進行選取的。

一個 DateField 或 DateTimeField 字段的名字. 若提供該選項, 該模塊將擁有一個 get_latest() 函數以獲得 "最新的" 對象(依據那個字段):

managed

​ 因爲Django會自動根據模型類生成映射的數據庫表,若是你不但願Django這麼作,能夠把managed的值設置爲False。

默認值爲True,這個選項爲True時Django能夠對數據庫表進行 migrate或migrations、刪除等操做(執行數據庫遷移命令)。在這個時間Django將管理數據庫中表的生命週期

若是爲False的時候,不會對數據庫表進行建立、刪除等操做。能夠用於現有表、數據庫視圖等,其餘操做是同樣的。

ordering

​ 這個字段是告訴Django模型對象返回的記錄結果集是按照哪一個字段排序的。好比下面的代碼:

ordering=['order_date'] 
# 按訂單升序排列
ordering=['-order_date'] 
# 按訂單降序排列,-表示降序
ordering=['?order_date'] 
# 隨機排序,?表示隨機
ordering = ['-pub_date', 'author']
# 對 pub_date 降序,而後對 author 升序

須要注意的是:不論使用了多少個字段排序,admin只使用第一個字段

permissions

​ permissions主要是爲了在Django Admin管理模塊下使用的,若是你設置了這個屬性可讓指定的方法權限描述更清晰可讀。

要建立一個對象所須要的額外的權限. 若是一個對象有 admin 設置, 則每一個對象的添加,刪除和改變權限會人(依據該選項)自動建立.下面這個例子指定了一個附加權限

verbose_name

​ verbose_name的意思很簡單,就是給你的模型類起一個更可讀的名字:

verbose_name = "book"

verbose_name_plural

這個選項是指定,模型的複數形式是什麼,好比:

verbose_name_plural = 'books'

若未提供該選項, Django 會使用 verbose_name + "s".

相關文章
相關標籤/搜索