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

全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

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

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

好口碑IT培訓(xùn)

  Django模型的元屬性用于設(shè)置數(shù)據(jù)表的一些屬性,例如排序字段、數(shù)據(jù)表名、字段單復(fù)數(shù)等。通過(guò)在模型類(lèi)中添加內(nèi)部類(lèi)Meta的方式可以定義模型的元屬性。例如,在模型類(lèi)BookInfo中設(shè)置數(shù)據(jù)表名稱(chēng),代碼如下:

class BookInfo(model.Model):
    ...              # 定義的字段
    class Meta:
        db_table = 'tb_bookinfo'

  以上代碼在Meta中通過(guò)db_table屬性設(shè)置數(shù)據(jù)名為“tb_bookinfo”。

  除db_table元屬性外,Django還提供了十幾種元屬性,接下來(lái)對(duì)常用的元屬性進(jìn)行介紹。

  1.abstract

  用于設(shè)置模型是否為抽象類(lèi),若abstract=True,則表示模型是抽象類(lèi)。抽象類(lèi)用來(lái)定義多個(gè)模型類(lèi)的共有信息,在Meta類(lèi)中設(shè)置abstract=True,這個(gè)模型不能被實(shí)例化,只能作為其他類(lèi)型的基類(lèi)。

  2.app_label

  如果定義的模型沒(méi)有在配置文件的INSTALLED_APPS項(xiàng)中注冊(cè),那么必須使用app_label選項(xiàng)在Meta類(lèi)中指明當(dāng)前模型所屬的應(yīng)用。

  3.ordering

  ordering屬性用于設(shè)置模型字段的排序方式,該屬性默認(rèn)按照升序排序,取值可以是由字段名組成的元組或列表。例如,在BookInfo類(lèi)中使用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è)字段無(wú)法為記錄排序,則再根據(jù)第二個(gè)字段進(jìn)行排序。示例如下:

ordering = ['id','score']

  上述示例表示優(yōu)先按照“id”進(jìn)行升序排序,如果只根據(jù)“id”無(wú)法為記錄排序,再根據(jù)“score”進(jìn)行升序排序。

  4.verbose_name

  元屬性verbose_name用于設(shè)置顯示在后臺(tái)管理系統(tǒng)頁(yè)面上的、直觀(guān)可讀的數(shù)據(jù)表名。示例如下:

verbose_name = "book"
verbose_name = "圖書(shū)"

  5.verbose_name_plural

  元屬性verbose_name_plural用于設(shè)置模型類(lèi)在后臺(tái)管理系統(tǒng)頁(yè)面上顯示的表名的復(fù)數(shù)形式。示例如下:

verbose_name_plural = "books"

  如果沒(méi)有指定verbose_name_plural,那么默認(rèn)以verbose_name加上“s”作為復(fù)數(shù)形式。例如,verbose_name值為book,那么模型類(lèi)名的復(fù)數(shù)形式為books。

0 分享到:
和我們?cè)诰€(xiàn)交談!