一、model中的class Meta
通过内嵌类class Meta 给model定义元数据
class Person(models.Model):
name = models.Charfield(max_length=16)
age = models.IntegerField()
class Meta:
abstract = True
class Student(Person):
stu_id = models.CharField(max_length=5)
1)abstract
设为True之后,Person就不能作为一个普通的Django模型,而是作为一个抽象类的存在,提供一些公有的属性。
2)db_table
指定自定义的数据库表名,不然就按照django自己的规则生成数据库表名。
class Meta:
db_table = 'xxxx'
3)app_label
只在一种情况下使用,就是你的模型类不在默认的应用程序包下的models.py文件中,这时候你就要指定这个模型类是哪个应用程序的了,比如你在别的地方写了一个模型类,但是这个模型类是属于app01的
app_label = 'app01'
4)db_tablespace
有些数据库有数据表空间,可以指定这个模型对应的数据库表放在哪个数据库表空间。
5)get_latest_by
由于django的管理方法中有个lastest()方法,就是得到最近一行记录,如果你的数据模型中有DateField或DateTimeField类型的字段,你可以通过这个选项指定lastest()是按照哪个字段进行选取的。
一个 DateField 或 DateTimeField 字段的名字. 若提供该选项, 该模块将拥有一个 get_latest() 函数以得到 "最新的" 对象(依据那个字段):
get_latest_by = "order_date"
6)managed
由于django对自动生成映射的数据库表,如果不需要这么做,可以把managed的值设置为False。默认为True,这时Django可以自动对数据库进行migrate或migrations、删除等操作,
7)ordering
ordering=['order_date']
# 按订单升序排列
ordering=['-order_date']
# 按订单降序排列,-表示降序
ordering=['?order_date']
# 随机排序,?表示随机
ordering = ['-pub_date', 'author']
# 对 pub_date 降序,然后对 author 升序
8)verbose_name
另起一个名字
verbose_name = 'xxx'
9)verbose_name_plural
指定模型的复数形式是什么,不提供,django会自动使用verbose_name + 's'的形式命名。
verbose_name_plural = "xxxs"