Django3.0中apps应用下models.py中Meta选项详解以及常用示例模板。
全部配置文件索引目录传送门:
【Django3.0框架翻译】models篇:全部配置目录索引
Meta选项
- 定义方式
- 使用参数
-
- 1.abstract
- 2.app_label
- 3.base_manager_name
- 4.db_table
- 5.db_tablespace
- 6.default_manager_name
- 7.default_related_name
- 8.get_latest_by
- 9.managed
- 10.order_with_respect_to
- 11.ordering
- 12.permissions
- 13.default_permissions
- 14.proxy
- 15.required_db_features
- 16.required_db_vendor
- 17.select_on_save
- 18.indexes
- 19.unique_together
- 20.index_together
- 21.constraints
- 22.verbose_name
- 23.verbose_name_plural
定义方式
class ModelName(models.Model):
ColName = models.CharField(maxlength=30)
class Meta:
...... # 具体使用参数
使用参数
1.abstract
是否构建抽象类,若为True,则该对应的Class ModelName不会生成数据表单,也无法直接使用,只能通过继承、重写的的方式使用。
abstract = True
2.app_label
用于定义该Class ModelName属于哪个应用app,默认即可。
app_label = '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是否支持表空间,settings中定义那么它会使用,默认即可。
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命令
python manage.py migrate
时,是否进行数据库迁移使用,默认True,如果不想迁移改False,默认即可。
managed = True
10.order_with_respect_to
用于定义该Class ModelName模型中多对多关联中排序使用,默认即可。
11.ordering
用于定义该Class ModelName模型中某字段的排序。
ordering = ['order_date'] # 升序
ordering = ['-order_date'] # 倒序
12.permissions
用于定义该Class ModelName创建对象时权限表中额外的权限。
增加、删除和修改权限会自动为每个模型创建。
这个功能经常和用户组联合使用,更多参考如下
Django中的许可(Permissions)和用户组(Group)
13.default_permissions
用于定义该Class ModelName默认的许可。默认为(‘add’, ‘change’, ‘delete’, ‘view’),默认即可。
default_permissions = ('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支持数据库的类型,默认即可。
required_db_vendor = ['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= "自定义名称"