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中的字段都 ...
随机推荐
- LNK2026: 模块对于 SAFESEH 映像是不安全的<转>
转自VC错误:http://www.vcerror.com/?p=162 错误描述: 在使用VS2012编译工程时,提示错误:" error LNK2026: 模块对于 SAFESEH 映像 ...
- Linux运维常见故障排查和处理的33个技巧汇总
作为linux运维,多多少少会碰见这样那样的问题或故障,从中总结经验,查找问题,汇总并分析故障的原因,这是一个Linux运维工程师良好的习惯.每一次技术的突破,都经历着苦闷,伴随着快乐,可我们还是执着 ...
- zfs mount
root@47abd5c91421:/# ls /native/sbin autopush cryptoadm dhcpinfo dlstat flowadm ibd_ ...
- What is _MainTex_ST ?
[What is _MainTex_ST ?] 在Unity自带的Unlit/Texture中,有引用到float4 _MainTex_ST,如下: // Unlit shader. Simplest ...
- Texture Combiner
[Texture Combiner] After the basic vertex lighting has been calculated, textures are applied. In Sha ...
- 61. Rotate List(List)
Given a list, rotate the list to the right by k places, where k is non-negative. For example: Given ...
- shell编程之sed语法
首先插播条广告: 想要进一个文件夹去 看下面有那些文件 必须对这个文件夹有执行权限. sed p 打印对应的行 2p 打印第二行. -n 只输出经过sed 命令处理的行 看图吧 不太会擅长言语 ...
- Opencv Shi-Tomasi角点检测
#include <iostream>#include <opencv2/opencv.hpp> using namespace std;using namespace cv; ...
- 563. Binary Tree Tilt 子节点差的绝对值之和
[抄题]: Given a binary tree, return the tilt of the whole tree. The tilt of a tree node is defined as ...
- 多视几何——三角化求解3D空间点坐标
VINS-Mono / VINS-Fusion中triangulatePoint()函数通过三角化求解空间点坐标,代码所体现的数学描述不是很直观,查找资料,发现参考文献[1]对这个问题进行详细解释,记 ...