【Django3.0框架翻译】models.py篇:Meta选项

Django3.0中apps应用下models.py中Meta选项详解以及常用示例模板。

全部配置文件索引目录传送门:
【Django3.0框架翻译】models篇:全部配置目录索引

定义方式

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= "自定义名称"

猜你喜欢

转载自blog.csdn.net/qq_20288327/article/details/110532041