本文介绍配置 Django 元数据 Meta 选项,以及相关参数说明。
定义方式
class ModelName(models.Model):
ColName = models.CharField(maxlength=30)
class Meta:
…… # 具体使用参数
参数说明
1.abstract
# 是否构建抽象类
# abstract = True,则该对应的Class ModelName不会生成数据表单
# 也无法直接使用,只能通过继承、重写的的方式使用
2.app_label
# 用于定义该Class ModelName属于哪个应用app,默认即可
3.base_manager_name
# 用于定义该Class ModelName管理器的属性名,默认即可
4.db_table
# 用于定义该Class ModelName对应生成在数据库中的表名,默认即可
db_table = 'table_name'
table_name = 'table_name'
5.db_tablespace
# 用于定义该Class ModelName是否支持表空间,默认即可
6.default_manager_name
# 用于定义该Class ModelName模型名称管理,默认即可
7.default_related_name
# 用于定义该Class ModelName模型关联对象的名称使用,默认即可
8.get_latest_by
# 用于定义该Class ModelName模型
# 若字段类型是DateField, DateTimeField时候显示最后显示的第一条记录是最近一条记录,同倒序排列
get_latest_by = "order_date"
get_latest_by = ['-order_time', 'order_date']
9.managed
# 用于定义该Class ModelName模型在执行shell命令
# shell命令使用 python manage.py migrate
# 是否进行数据库迁移使用,默认True,如果不想迁移改False,默认即可。
10.order_with_respect_to
# 用于定义该Class ModelName模型中多对多关联中排序使用,默认即可
11.ordering
# 用于定义该Class ModelName模型中某字段的排序
ordering = ['order_date'] # 升序
ordering = ['-order_date'] # 倒序
12.permissions
# 用于定义该Class ModelName创建对象时权限表中额外的权限
# 增加、删除和修改权限会自动为每个模型创建
13.default_permissions
# 用于定义该Class ModelName默认的许可。
# 默认值: ('add', 'change', 'delete', 'view')
14.proxy
# 用于定义该Class ModelName是否使用代理
# 常用于多表继承,默认即可
15.required_db_features
# 用于定义该Class ModelName依赖数据库的功能,默认即可
required_db_features = [‘gis_enabled’] # 依赖Gis功能
16.required_db_vendor
# 用于定义该Class ModelName支持数据库的类型,默认即可
# 默认值:['sqlite', 'postgresql', 'mysql', 'oracle']
17.select_on_save
# 老版本用于保存使用,默认即可
django.db.models.Model.save()
18.indexes
# 用于定义该Class ModelName模型索引的列表
indexes = [
models.Index(fields= [ 'col_name_1', 'col_name_2' ]),
models.Index(fields= [ 'col_name_1' ], name='col_name_1_idx'),
]
19.unique_together
# 用于定义该Class ModelName模型字段内容组合唯一使用
unique_together = [
['col_name_1', 'col_name_2']
]
20.index_together
# 用于定义该Class ModelName模型使用索引的字段
index_together = [
["col_name_1", "col_name_2"],
]
21.constraints
# 用于定义该Class ModelName模型字段内容的约束
# 相当于filter提前过滤
constraints = [
models.CheckConstraint(check=models.Q(age__gte=18),name='age_gte_18'),
]
22.verbose_name
# 用于定义该Class ModelName模型重新定义一个名字(单数形式)
verbose_name = "自定义名称"
23.verbose_name_plural
# 用于定义该Class ModelName模型重新定义一个名字(复数形式)
verbose_name_plural= "自定义名称"