Django - 回顧(1)- 模型層的Meta選項詳解

1、模型層的Meta選項詳解

  Django模型類的Meta是一個內部類,它用於定義一些Django模型類的行爲特性。使用方法及參數解釋以下:git

class Book(models.Model):
      nid=models.AutoField(primary_key=True)
      title=models.CharField(max_length=32)
      price = models.DecimalField(max_digits=5, decimal_places=2)


      def __str__(self):
          return self.title
    
      class Meta:
          app_label = "app02"
          db_table = "book"
          unique_together = ["title", "price"]
          verbose_name = "書籍"
          ordering = ["price"]

一、app_label

  這個選項只在一種狀況下使用,就是你的模型類不在默認的應用程序包下的models.py文件中,這時候須要指定你這個模型類是哪一個應用程序的。數據庫

  若是一個model沒有定義在默認的models.py,例如若是你的app的models在myapp.models子模塊下,你必須定義app_label讓Django知道它屬於哪個app,以下:django

 app_label = 'myapp'

二、db_table

  db_table是指定自定義數據庫表名的。app

  爲了節省時間,Django有一套默認的按照必定規則(應用名_模型類名小寫)生成數據模型對應的數據庫表名。咱們能夠經過db_table自定義該model在數據庫中的表名稱,以下:spa

db_table = 'mytable'

三、ordering

  對象的默認順序,用於獲取對象列表時。code

  其值是一個元組或字符串和/或查詢表達式列表。每一個字符串都是一個帶有可選「 - 」前綴的字段名稱,表示降序。沒有前導「 - 」的字段將按升序排序。對象

  ordering = ['pub_date']  # 表示要按pub_date字段升序排序
  ordering = ['-pub_date']  # 要按pub_date降序排序
  ordering = ['-pub_date', 'author']  ?# 要按pub_date降序排序,而後按author升序排序

四、unique_together

  表示約束聯合惟一字段,即一塊兒使用的字段名稱集必須是惟一的。blog

五、verbose_name

  對象的可讀名稱,單數,若是沒有給出,Django將使用類名小寫:即CamelCase變爲camelcase。排序

 

更多Meta信息參見Django文檔:https://docs.djangoproject.com/zh-hans/2.0/ref/models/options/ci

相關文章
相關標籤/搜索