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

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

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

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

好口碑IT培訓(xùn)

  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。

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