Django 4.x Models Meta 元数据选项

Django 的 Meta 元数据选项指的是『除了字段外的所有内容』,例如排序方式、数据库表名、人类可读的单数或者复数名等等。所有的这些都是非必须的,甚至元数据本身对模型也是非必须的。

在模型中增加元数据,需要在模型类中添加一个子类,名字是固定的Meta,然后在这个Meta类下面增加各种元数据选项。


Meta 定义方式

class ModelName(models.Model):     ColName = models.CharField(maxlength=30)    class Meta:         # 进行设置具体的参数        ......

Meta 选项说明

abstract

用于构建抽象类,设置 abstract = True 则对设置的 model 类不会生成对应的数据表单,智能够进行继承和重新方法的使用。

abstract = True

app_label

用于定义对应 models 的属于的应用app,默认不需要修改。

base_manager_name

用于定义 models 的管理器属性名称,默认不需要修改。


db_table

用于定义 models 对应的数据库表单名称,默认不需要修改。

需要重新定义该 models 的名称则进行自定义的设置。

db_table = 'table_name'table_name = 'table_name'

db_tablespace

用于定义 models 是否支持默认空间表单,默认不需要修改。

default_manager_name

用于定义 models 的模型管理名称,默认不需要修改。

default_related_name

用于定义 models 的模型关联对象使用名称,默认不需要修改。

get_latest_by

用于定义 models 的模型数据排列顺序,如果字段类型属于 DateField, DateTimeField 显示的首条记录是最后更新的数据记录。

get_latest_by = "order_date"get_latest_by = ['-order_time', 'order_date']

managed

用于定义 models 模型在执行 shell 命名使用迁移命令时候是否迁移数据库。

cmd 命令执行数据库迁移。

python manage.py migrate

managed 管理。

managed=True # 默认迁移managed=False # 设置不迁移



order_with_respect_to

用于定义 models 表单中默认的排序,默认不需要修改。

ordering

用于定义 models 表单中指定字段的排列顺序。

ordering = ['order_date']  # order_date 升序排列ordering = ['-order_date']  # order_date 降序排列

也可以进行多列字段的排序。

ordering = ['order_date','col_name']

permissions

用于定义 models 船舰对象权限表单的额外权限,对数据表单的增删改查 (add、change、delete、view)会自动分配到每个model中。

default_permissions

用于定义 models 中操作表单的默认权限,默认不需要修改。

default_permissions = ('add', 'change', 'delete', 'view')

proxy

用于定义 models 使用使用继承,默认不需要修改。

proxy = True

required_db_features

用于定义 models 依赖数据库的功能,默认不需要修改。

required_db_features = ['gis_enabled'] # 依赖Gis功能

required_db_vendor

用于定义 models 支持数据库的类型,默认不需要修改。

required_db_vendor = ['sqlite', 'postgresql', 'mysql', 'oracle']

select_on_save

Django 默认的数据保存算法,默认不需要修改。

django.db.models.Model.save()

indexes

用于定义 models 模型索引的列表。

indexes = [    models.Index(fields= [ 'col_name_1', 'col_name_2' ]),    models.Index(fields= [ 'col_name_1' ], name='col_name_1_idx'),]

unique_together

用于定义 models 模型字段内容组合唯一使用。

unique_together = [    ['col_name_1', 'col_name_2']]

index_together

用于定义 models 模型使用索引的字段。

index_together = [    ["col_name_1", "col_name_2"],]

constraints

用于定义 models 模型字段内容的约束,相当于 filter 提前过滤。

constraints = [    models.CheckConstraint(check=models.Q(age__gte=18),name='age_gte_18'),]

verbose_name

用于定义 models 模型重新定义一个名字(单数形式)。

verbose_name = "自定义名称"

verbose_name_plural

用于定义 models 模型重新定义一个名字(复数形式)。

verbose_name_plural= "自定义名称"




发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章