Day47-Django中的class Meta知識點

    本週開始進行半獨立的Django建站項目,在這個過程中相當於把之前所學進行一遍複習練習。其間遇到幾個小的知識點,之前不是很明白,今天要基本弄清楚。

今天來回顧一下Django中model的class Meta

class Main(models.Model):
    img = models.CharField(max_length=200) # 圖片
    name = models.CharField(max_length=100) # 名稱
    trackid = models.CharField(max_length=16) # 通用id

    class Meta:
        abstract = True        #抽象類
class MainWheel(Main):
    # 輪播banner
    class Meta:
        db_table = 'axf_wheel'
class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()

    class Meta:
        ordering = ['order_date']
        # 按訂單升序排列

    以上三種class Meta是比較常用的,所以大概回顧一下。查了一些資料,才勉強搞懂。首先class Meta做爲嵌套類,主要目的是給上級類添加一些功能,或者指定一些標準。

    比如第一個abstract=True這個東東,是爲了繼承,將該基類定義爲抽象類,即不必生成數據庫表單,只作爲一個可以繼承的基類,把一些子類必須的代碼放在基類,避免重複代碼也避免重複錄入數據庫。大概是這麼個意思吧?

   再比如db_table='xxxx'這個東東更簡單些,其實就是指定該類的數據庫表單名字。當然如果不指定也沒關係,Django會自動默認的按照一定規則生成數據模型對應的數據庫表名。至於合不合你的意那就得看緣分了,所以自己指定往往比較好。

    又比如ordering=‘xxxxx’,是表示按照指定的字段進行數據庫的排序。主要是爲了好看好查找。你可以指定任意的表單名稱或內容,數據庫生成之後就會按照指定的列進行排序。還可以升序降序隨機,唉反正挺複雜的。


    其實以上三種Django中model嵌套類的元數據定義,都涉及不少的知識點且有多種選擇和用法。甚至這種嵌套類中可以有十幾種不同的元數據定義方法,真要研究下去暈都暈死了。還好沒有一個選項是必需的. 是否添加class Meta 到你的 model 完全是可選的以後用到什麼再查吧,太複雜了。我學習的不好,儘量遇到什麼就搞懂什麼吧。

   



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章