教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Django模型的元屬性是做什么用的?

更新時間:2023年01月11日14時08分 來源:傳智教育 瀏覽次數:

好口碑IT培訓

  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。

0 分享到:
和我們在線交談!