?
今天來回顧一下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) # 通用idclass Meta:abstract = True #抽象類
class MainWheel(Main):# 輪播bannerclass 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 完全是可選的。以后用到什么再查吧,太復雜了。我學習的不好,盡量遇到什么就搞懂什么吧。
?