python django模型內部類meta
阿新 • • 發佈:2018-11-19
歸納 介紹 表示 輸出結果 pro meta dmi code 返回
name=models.CharField(max_length=100)
GENDER_CHOICE=((u‘M‘,u‘Male‘),(u‘F‘,u‘Female‘),)
gender=models.CharField(max_length=2,choices=GENDER_CHOICE,null=True)
class Meta:
abstract=True
class Employee(Human):
joint_date=models.DateField()
class Customer(Human):
first_name=models.CharField(max_length=100)
birth_day=models.DateField()
Creating tables ...
Creating table myapp_employee
Creating table myapp_customer
Installing custom SQL ...
Installing indexes ...
No fixtures found.
ordering=[‘-order_date‘] # 按訂單降序排列,-表示降序
ordering=[‘?order_date‘] # 隨機排序。?表示隨機
Django 模型類的Meta是一個內部類,它用於定義一些Django模型類的行為特性。下面對此作一總結:
- abstract
比方以下的代碼中Human是一個抽象類。Employee是一個繼承了Human的子類,那麽在執行syncdb命令時,不會生成Human表。可是會生成一個Employee表,它包括了Human中繼承來的字段。以後假設再加入一個Customer模型類,它能夠相同繼承Human的公共屬性:
class Human(models.Model):name=models.CharField(max_length=100)
GENDER_CHOICE=((u‘M‘,u‘Male‘),(u‘F‘,u‘Female‘),)
gender=models.CharField(max_length=2,choices=GENDER_CHOICE,null=True)
class Meta:
abstract=True
class Employee(Human):
joint_date=models.DateField()
class Customer(Human):
first_name=models.CharField(max_length=100)
birth_day=models.DateField()
上面的代碼,運行python manage.py syncdb 後的輸出結果入下。能夠看出Human表並沒有被創建:
$ python manage.py syncdbCreating tables ...
Creating table myapp_employee
Creating table myapp_customer
Installing custom SQL ...
Installing indexes ...
No fixtures found.
- app_label
- db_table
Django有一套默認的依照一定規則生成數據模型相應的數據庫表名。假設你想使用自己定義的表名。就通過這個屬性指定,比方:
table_name=‘my_owner_table‘- db_tablespace
- get_latest_by
- managed
- order_with_respect_to
- ordering
ordering=[‘-order_date‘] # 按訂單降序排列,-表示降序
ordering=[‘?order_date‘] # 隨機排序。?表示隨機
- permissions
- proxy
- unique_together
比方如果你希望,一個Person的FirstName和LastName兩者的組合必須是唯一的,那麽須要這樣設置:
unique_together = (("first_name", "last_name"),)- verbose_name
- verbose_name_plural
這個選項是指定。模型的復數形式是什麽。比方:
verbose_name_plural = "stories"假設你不指定Django在型號名稱加一後,自己主動’s’
python django模型內部類meta