django model之Meta选项

Posted zq8421

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django model之Meta选项相关的知识,希望对你有一定的参考价值。

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"

 

以上是关于django model之Meta选项的主要内容,如果未能解决你的问题,请参考以下文章

Django模型之Meta选项详解

Django模型之Meta选项详解

Django学习Django model中的class Meta详解

Django学习Django model中的class Meta详解

Django 第二十六Django model中的 class Meta 详解

Django model 中的 class Meta 详解