需要在模型类中添加一个子类, 名字是固定的Meta.
from django.db import models
class Ox(models.Model):
horn_length = models.IntegerField()
class Meta:
ordering = ["horn_length"]
abstract=True
, 那么模型会被认为是一个抽象模型.如果定义了模型的app 没有在 INSTALLED_APPS 中注册, 则必须通过此元选项声明它属于哪个app :
app_label = 'myapp'
模型的_base_manager
管理器的名字,默认是'objects'
。
指定在数据库中, 当前模型生成的数据表的表名, 比如 :
db_table = 'my_freinds'
get_latest_by = "order_date" # 根据order_date升序排列
get_latest_by = ['-priority', 'order_date'] # 根据priority排序排列, 如果发生同序, 则使用order_date升序排序
该元数据默认值为True,表示Django将按照既定的规则,管理数据库表的生命周期。
如果设置为False,将不会针对当前模型创建和删除数据库表,也就是说Django暂时不管这个模型了。
用于指定该模型生成的所有对象的排序方式
ordering = ['pub_date'] # 表示按'pub_date'字段进行升序排列
ordering = ['-pub_date'] # 表示按'pub_date'字段进行降序排列
ordering = ['-pub_date', 'author'] # 表示先按'pub_date'字段进行降序排列,再按`author`字段进行升序排列。
如果设置了proxy = True,表示使用代理模式的模型继承方式
声明模型支持的数据库。Django默认支持sqlite, postgresql, mysql, oracle。
unique_together = ['name', 'birth_day', 'address']
表示如果两个用户 'name', 'birth_day', 'address'
都相同, 则会被Django拒绝
联合索引
用于设置模型对象的直观、人类可读的名称,用于在各种打印、页面展示等场景。可以用中文。
label等同于app_label.object_name
。例如polls.Question
,polls是应用名,Question
是模型名。