Django模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性
abstract
如果为True,就表示抽象基类,不创建表,只是把字段传递给继承自己的子类使用
app_label
这个选型只在一种情况下使用,就是你的模型不在默认的应用程序包下的models.py文件中,这时候需要指定你这个模型是哪个应用程序的。如果模型在INSTALLED_APPS之外被定义,则必须通过app_label声明它属于哪个app
db_table
该模型所用数据表的名称。Django默认使用你的 model class 的名称和包含这个 model 的 app 名称来构建 数据库的表名称。可以自定义这个表在数据库中的表名称,db_table = xxx
default_related_name
关联对象反向查找源对象时默认用到的名称,默认为<model_name>_set。也可以直接模型类中定义一个related_name来覆盖默认值
ordering
这个字段是告诉Django模型对象返回的记录结果集是按照哪个字段排序的。这是一个字符串的元组或列表,每个字符串都是一个字段名,前面带有可选的“-”前缀表示降序。 前面没有“-”的时候,将默认使用升序排列。 使用字符串“?”来随机排序。
- ordering=['order_date'] # 按订单升序排列
- ordering=['-order_date'] # 按订单降序排列,-表示降序
- ordering=['?order_date'] # 随机排序,?表示随机
- ordering=['-pub_date','author'] # 以pub_date为降序,在以author升序排列
unique_together
用来设置的不重复的字段组合,它是一个元组的元组,组合起来的时候必须是唯一的。这个元数据是非常重要的一个!它等同于数据库的联合约束!
比如:
unique_together = (('name', 'birth_day', 'address'),)
表示这3个字段的组合必须是唯一的,一旦三者都相同,则会被Django拒绝创建。联合唯一约束无法作用于普通的多对多字段。unique_together接收一个二维的元组((xx,xx,xx,...),(),(),()...),每一个元素都是一个元组,表示一组联合唯一约束,可以同时设置多组约束。为了方便,对于只有一组约束的情况下,可以简单地使用一维元素
verbose_name
verbose_name的意思很简单,就是给你的模型类起一个更可读的名字一般定义为中文,verbose_name = "学校"
用于admin中表名显示,每个字段也可以设置这个属性,用于admin中表里的字段的显示
verbose_name_plural
模型对象的复数名,比如“apples”。因为我们中文通常不区分单复数,所以保持和verbose_name
一致也可以如果此项没有设置,Django 会使用 verbose_name
+ "s"
。