更新時間:2023年01月11日14時08分 來源:傳智教育 瀏覽次數:
Django模型的元屬性用于設置數據表的一些屬性,例如排序字段、數據表名、字段單復數等。通過在模型類中添加內部類Meta的方式可以定義模型的元屬性。例如,在模型類BookInfo中設置數據表名稱,代碼如下:
class BookInfo(model.Model): ... # 定義的字段 class Meta: db_table = 'tb_bookinfo'
以上代碼在Meta中通過db_table屬性設置數據名為“tb_bookinfo”。
除db_table元屬性外,Django還提供了十幾種元屬性,接下來對常用的元屬性進行介紹。
1.abstract
用于設置模型是否為抽象類,若abstract=True,則表示模型是抽象類。抽象類用來定義多個模型類的共有信息,在Meta類中設置abstract=True,這個模型不能被實例化,只能作為其他類型的基類。
2.app_label
如果定義的模型沒有在配置文件的INSTALLED_APPS項中注冊,那么必須使用app_label選項在Meta類中指明當前模型所屬的應用。
3.ordering
ordering屬性用于設置模型字段的排序方式,該屬性默認按照升序排序,取值可以是由字段名組成的元組或列表。例如,在BookInfo類中使用ordering屬性設置數據表按id字段升序排序,代碼如下:
ordering = 'id'
如果想設置數據表按某個字段降序排序,可在字段前加“-”符號。示例如下:
ordering = ['-id']
如果ordering中存在多個字段,默認優(yōu)先按照第一個字段進行排序,如果第一個字段無法為記錄排序,則再根據第二個字段進行排序。示例如下:
ordering = ['id','score']
上述示例表示優(yōu)先按照“id”進行升序排序,如果只根據“id”無法為記錄排序,再根據“score”進行升序排序。
4.verbose_name
元屬性verbose_name用于設置顯示在后臺管理系統(tǒng)頁面上的、直觀可讀的數據表名。示例如下:
verbose_name = "book" verbose_name = "圖書"
5.verbose_name_plural
元屬性verbose_name_plural用于設置模型類在后臺管理系統(tǒng)頁面上顯示的表名的復數形式。示例如下:
verbose_name_plural = "books"
如果沒有指定verbose_name_plural,那么默認以verbose_name加上“s”作為復數形式。例如,verbose_name值為book,那么模型類名的復數形式為books。