Django模型之內建類Class Meta
阿新 • • 發佈:2018-12-21
Class Meta 作用:使用內部類來提供一些metadata,以下列舉一些常用的meta:
1,abstract:如下段程式碼所示,將abstract設定為True後,CommonInfo無法作為一個普通的Django模型,而是作為一個抽象基類存在,作用 是為其他的類提供一些公有的屬性。如Student會擁有三個屬性,即name,age,home_group。利於公用資訊的分解,避免重複編碼。
from django.db import models class CommonInfo(models.Model): name = models.CharField(max_length=100) age = models.PositiveIntegerField() class Meta: abstract = True class Student(CommonInfo): home_group = models.CharField(max_length=5)
2,db_table:用來指定model對應的資料庫中的表名,建議的格式為“this_is_table_name”,即小寫加下劃線的格式。若不指定也可 以,Django會自動生成相應的表名,但是,自動生成的表名的可讀性就不能夠保證了。
3,ordering:排序操作,例如我們需要根據date欄位來進行升序排列,則為ordering=['date']
,若為降序排列,則設定為ordering=['-date']
,應該注意到的是,ordering是個列表的表現形式,說明是可以接其他欄位的,比如ordering=['-date','name']
,則表示先按date進行降序排列,再按名字進行升序排列。雖然個人不建議使用ordering,但誰讓Django提供了呢。。。
4,unique_together:在資料進行寫表操作的時候,我們往往會遇到兩個欄位組合起來需要唯一的情況,例如IP和port,往往是唯一存在的,這個時候,unique_together就很有用了,可以設定成 unique_together = (("ip", "port"),)
unique_together =("ip", "port")
,是不是很靈活?