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"

原文地址:https://www.cnblogs.com/zq8421/p/10984261.html

时间: 2024-10-13 05:23:13

django model之Meta选项的相关文章

Django中model的Meta选项

Django模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.而可用的选项大致包含以下几类: 1,unique_together unique_together这个选项用于:当你需要通过两个字段保持唯一性时使用.比如假设你希望,一个Person的FirstName和LastName两者的组合必须是唯一的,那么需要这样设置:unique_together = (("first_name", "last_name"),)一个ManyToManyF

Django模型之Meta选项详解

Django模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.而可用的选项大致包含以下几类 abstract 这个属性是定义当前的模型是不是一个抽象类.所谓抽象类是不会对应数据库表的.一般我们用它来归纳一些公共属性字段,然后继承它的子类可以继承这些字段. Options.abstract如果abstract = True 这个model就是一个抽象类 app_label 这个选型只在一种情况下使用,就是你的模型不在默认的应用程序包下的models.py文件中,这时候需要指

Django model 中meta options之 abstract

当abstract=True时,这个model就变成了abstrct base class,那这个基类有什么特性呢? 当某一model中设置了abstract=True时,就会使该model中的字段都不会产生对应的表,而是可以作为基类加入到其他model中 那有什么用呢? 有时多个model有些相同的字段,这样很浪费时间,而且重复本身也不利于代码简洁.好该abstract来了 看官例: from django.db import models class CommonInfo(models.Mo

django model Meta选项

可用的 Meta 选项 abstract Options.abstract 如果 abstract = True ,这个 model 就是一个 抽象基类 . app_label Options.app_label 如果一个 model 定义在默认的 models.py 之外 (例如,如果你的 app 的 models 在 myapp.models 子模块下),你必须定义 app_label 让 Django 知道它属于哪一个 app app_label = 'myapp' db_table Op

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

class Foo(models.Model): bar = models.CharField(maxlength=30) class Meta: # ... Model 元数据就是 "不是一个字段的任何数据" -- 比如排序选项, admin 选项等等. 下面是所有可能用到的 Meta 选项. 没有一个选项是必需的. 是否添加 class Meta 到你的 model 完全是可选的. app_label app_label这个选项只在一种情况下使用,就是你的模型类不在默认的应用程序包

Django model 中的 class Meta 详解

class Foo(models.Model): bar = models.CharField(maxlength=30) class Meta: # ... Model 元数据就是 "不是一个字段的任何数据" -- 比如排序选项, admin 选项等等. 下面是所有可能用到的 Meta 选项. 没有一个选项是必需的. 是否添加 class Meta 到你的 model 完全是可选的. app_label app_label这个选项只在一种情况下使用,就是你的模型类不在默认的应用程序包

Django model中的 class Meta 详解

class Foo(models.Model): bar = models.CharField(maxlength=30) class Meta: # ... Model 元数据就是 "不是一个字段的任何数据" -- 比如排序选项, admin 选项等等. 下面是所有可能用到的 Meta 选项. 没有一个选项是必需的. 是否添加 class Meta 到你的 model 完全是可选的. app_label app_label这个选项只在一种情况下使用,就是你的模型类不在默认的应用程序包

Django model字段类型清单

转载:<Django model字段类型清单> Django 通过 models 实现数据库的创建.修改.删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField:一个自动递增的整型字段,添加记录时它会自动增长.你通常不需要直接使用这个字段:如果你不指定主键的话,系统会自动添加一个主键字段到你的model.(参阅自动主键字段) BooleanField:布尔字段,管理工具里会自动将其描述为checkbox. CharField:字符串字段,单行输入,用于较短的字符串,

Django Model 定义语法

Django Model 定义语法 版本:1.7主要来源:https://docs.djangoproject.com/en/1.7/topics/db/models/ 简单用法 from django.db import models class Person(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30) 会自动生成SQL: CREA