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