本週開始進行半獨立的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):

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 完全是可選的。以後用到什麼再查吧,太複雜了。我學習的不好,盡量遇到什麼就搞懂什麼吧。

推薦閱讀:

相關文章