Django Meta
Available Meta options
abstract
如果为True,这个model就是抽象类
app_label
如果模型是在INSTALLED_APPS中的应用程序之外定义的,它必须声明它属于哪个应用程序
app_label = 'myapp'
base_manager_name
用于模型的_base_manager的管理器的名称。
db_table
用于模型的数据库表的名称
db_table = 'music_album'
db_tablespace
用于此模型的数据库表空间的名称。默认设置是项目的DEFAULT_TABLESPACE设置。如果后端不支持表空间,则忽略此选项。
default_manager_name
用于模型的_default_manager的管理器的名称。
default_related_name
默认情况下,从相关对象返回到此对象的关系将使用的名称。默认值是<model_name>_set。也可以通过models.ForeignKey()的related_name参数设置。
get_latest_by
根据给定的字段返回表中的最新对象。
# Latest by ascending order_date.
get_latest_by = "order_date"
# Latest by priority descending, order_date ascending.
get_latest_by = ['-priority', 'order_date']
managed
默认为True,这意味着Django将在migrate中或作为迁移的一部分创建适当的数据库表,并将它们作为flush management命令的一部分删除。也就是说,Django负责管理数据库表的生命周期。
设置为False时,不会进行迁移。
order_with_respect_to
使该对象相对于给定字段(通常是一个外键)可排序。这可用于使相关对象相对于父对象可排序。例如,如果一个Answer与一个Question对象有关,并且一个Question有多个Answer,而且Answer的顺序很重要,那么您可以这样做:
from django.db import models
class Question(models.Model):
text = models.TextField()
# ...
class Answer(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
# ...
class Meta:
order_with_respect_to = 'question'
在设置order_with_respect t_to时,将提供另外两个方法来检索和设置相关对象的顺序:get_RELATED_order()和set_RELATED_order(),其中RELATED是小写的模型名称。例如,假设一个问题对象有多个相关的回答对象,返回的列表包含相关回答对象的主键:
>>> question = Question.objects.get(id=1)
>>> question.get_answer_order()
[1, 2, 3]
问题对象的相关回答对象的顺序可以通过传入一个回答主键列表来设置
>>> question.set_answer_order([3, 1, 2])
相关的对象还获得两个方法,get_next_in_order()和get_previous_in_order(),可以使用它们以正确的顺序访问这些对象。假设答案对象是按id排序的:
>>> answer = Answer.objects.get(id=2)
>>> answer.get_next_in_order()
<Answer: 3>
>>> answer.get_previous_in_order()
<Answer: 1>
在内部,order_with_respect t_to添加一个名为_order的额外字段/数据库列,并将模型的order选项设置为该字段。因此,order_with_respect t_to和order不能一起使用,而order_with_respect t_to添加的order将在您获得此模型的对象列表时应用。
Changing order_with_respect_to
因为order_with_respect t_to添加了一个新的数据库列,所以如果您在初始迁移之后添加或更改order_with_respect t_to,那么一定要进行并应用适当的迁移。
ordering
对象的默认顺序,用于获取对象列表
ordering = ['-order_date']
这是一个元组或列表。每个字符串都是一个字段名,具有可选的“-”前缀,表示降序。没有前导“-”的字段将按升序排列。用?随机排序。
您还可以使用查询表达式。要按作者升序排序并使null值最后排序,请使用这个
from django.db.models import F
ordering = [F('author').asc(nulls_last=True)]
permissions
创建此对象时进入权限表的额外权限。为每个模型自动创建添加、更改、删除和视图权限。这个例子指定了一个额外的权限can_deliver_pizzas
permissions = (("can_deliver_pizzas", "可提供pizza"),)
default_permissions
默认为('add', 'change', 'delete', 'view')。例如,如果您的应用程序不需要任何默认权限,您可以通过将该列表设置为空列表来定制该列表。迁移创建模型之前,必须在模型上指定它,以防止创建任何遗漏的权限。
proxy
如果proxy = True,子类化另一个模型的模型将被视为代理模型。
required_db_features
当前连接应该具有的数据库特性列表,以便在迁移阶段考虑模型。例如,如果您将这个列表设置为['gis_enabled'],那么模型将仅在启用gis的数据库上同步。在使用多个数据库后端进行测试时,跳过一些模型也很有用。避免模型之间的关系,因为ORM不处理这个问题,所以可能会创建模型,也可能不会创建模型。
required_db_vendor
此模型专用于的受支持的数据库供应商的名称。当前的内置厂商名称是:sqlite, postgresql, mysql, oracle。如果该属性不是空的,且当前连接供应商不匹配该属性,则模型将不会同步。
select_on_save
1.6版本前室友select检查更新
indexes
要在模型上定义的索引列表:
class Customer(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
class Meta:
indexes = [
models.Index(fields=['last_name', 'first_name']),
models.Index(fields=['first_name'], name='first_name_idx'),
]
unique_together
字段名称集在一起必须是唯一的:
unique_together = (("driver", "restaurant"),)
unique_together在处理单个字段集时可以是单个元组:
unique_together = ("driver", "restaurant")
一个ManyToManyField不能包含在unique_together中。(现在还不清楚这意味着什么!)如果需要验证与ManyToManyField相关的唯一性,请尝试使用信号或显式通过模型。
违反约束时在模型验证过程中引发的验证错误包含unique_together错误代码。
index_together
推荐使用indexes
index_together = [
["pub_date", "deadline"],
]
在处理单个字段集时,index_together可以是单个列表:
index_together = ["pub_date", "deadline"]
verbose_name
对象的复数名称:
verbose_name_plural = "stories"
如果没有指定,django 将会使用verbo_name + "s"定义它
Read-only Meta attributes
label
对象的表示,返回app_label.object_name。例如:“polls.Question”。
label_lower
小写的label
如:“polls.QAuestion”。
Django Meta的更多相关文章
- Django——META内部类选项
Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.以下对此作一总结: abstract 这个属性是定义当前的模型类是不是一个抽象类.所谓抽象类是不会对应 ...
- Django Meta内部类选项
http://blog.csdn.net/yelbosh/article/details/7545335
- Django实战(7):改造ProductList界面
有了上一节关于Django模板的基础,改造界面就很容易理解了.将界面设计师设计的页面中的内容根据复用程度分别放到基础模板base.html和专用模板productlist.html中. depot/t ...
- Django model总结(上)
Django model是django框架中处于比较核心的一个部位,准备分三个博客从不同的方面分别进行阐述,本文为<上篇>,主要对[a]Model的基本流程,比如它的创建,迁移等:默认行为 ...
- Django模型类Meta元数据详解
转自:https://my.oschina.net/liuyuantao/blog/751337 简介 使用内部的class Meta 定义模型的元数据,例如: from django.db impo ...
- django model Meta选项
可用的 Meta 选项 abstract Options.abstract 如果 abstract = True ,这个 model 就是一个 抽象基类 . app_label Options.app ...
- Django模型层Meta内部类详解
Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.以下对此作一总结: abstract 这个属性是定义当前的模型类是不是一个抽象类.所谓抽象类是不会对应 ...
- 学习django之构建Web是Meta嵌套类的几处使用
Django中meta嵌套类的使用 1.模型中使用嵌套类 在定义抽象模型时如: class Meta : abstract=true 用来指明你创建的模型是一个抽象基础类的模型继承. 2.在一个对象对 ...
- Django model 中meta options之 abstract
当abstract=True时,这个model就变成了abstrct base class,那这个基类有什么特性呢? 当某一model中设置了abstract=True时,就会使该model中的字段都 ...
随机推荐
- LUA 环境
LUA中环境是指一个函数执行的表,即一个函数在什么表中执行. 这里的函数是特殊的,是loadfile("x.lua")的返回值. loadfile("x.lua" ...
- MyBatis3 用log4j在控制台输出 SQL
用log4j在控制台输出 SQL 在spring-mybatis.xml中配置 <bean id="sqlSessionFactory" class="org.my ...
- linux下connect超时时间探究
最近在linux做服务器开发的时候,发现了一个现象:服务器在启动的时候调用了 connect 函数,因为连接了一个不可用的端口,导致connect最后报出了 “Connection timed out ...
- 给用户root权限
1.添加用户,首先用adduser命令添加一个普通用户,命令如下: #adduser tommy //添加一个名为tommy的用户#passwd tommy #passwd tommy //修改密 ...
- inline-block元素出现位置错位的解决方法
如下代码所示: <div class="container"> <div style="display: inline-block; height: 1 ...
- Linux Debian 下LNMP服务器——nginx+mysql+php环境搭建及配置
昨天刚给公司服务器装了LNMP服务器环境,在这里简单记录一下过程备忘. 这里我在安装的时候是用的Dotdeb源,仅供参考. 1.导入Dotdeb源,据说Dotdeb源里的软件版本比较新. 在向源中导入 ...
- MonoDevelop Assembly Browser
[MonoDevelop Assembly Browser] View -> Assembly Browser,通过此窗口可以查看Dll的反编译后的代码. 还有几款免费的替代产品可以使用, 虽然 ...
- JAVA中List的几个方法
add()方法.插入某个位置的数据,他有两个参数一个参数是下标,一个参数是元素.需要注意的是下标大小应该小于等于List集合大小,否则就会抛出下标越界异常! 代码: public static ...
- 108.Convert Sorted Array to Binary Search Tree(Array; Divide-and-Conquer, dfs)
Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 思路 ...
- C# 实现脚本辅助功能
http://blog.csdn.net/w86440044/article/details/42493683 http://blog.csdn.net/wujizhishang/article/de ...