GMeta
模型 GMeta 是类似Django Meta 的一种内置模型配置类,主要作用是用于增强模型的表达能力。
GMeta定义在Django 的Model 里面,如:
GMeta有以下公开属性:
- title_field, 指定模型的标題字段。
- creator_field,指定模型的
创建人
字段。 - updater_field,指定模型的
更新人
字段。 - computed_fields,配置计算字段。
- annotated_fields,配置聚合字段
- exclude_fields,指定序列化时忽略的字段,通常用于类似密码类的字段。
- validators,模型级校验规则。
以下是详细说明:
#
title_field,标題字段声明在界面展示整个对象数据的时候,默认使用的字段。如在列表中显示一个ForeignKey对象,会输出该对象的title_field字段,否则默认输出该对象的主键值。作用类似于__str__
函数。
如果不指定title_field,会默认使用模型的主键。
数据类型: string
取值范围:模型的物理字段名,或计算字段名。
#
creator_field,创建人字段声明创建者字段,该字段必须是用户类型的外键。作用是会自动使用当前登录的用户填充指定的字段,仅发生在数据的第一次保存时。类似DatetimeField的auto_now_add的功能。
数据类型:字符串
取值范围:模型中用户类型的外键字段名。
注意:该配置将被弃用,它的功能将被UserField取代。
#
updater_field,修改人字段声明更新者字段,和creator_field是姐妹属性,要求的字段也是用户类型的外键,作用是会自动使用当前登录的用户填充指定的字段,发生在每一次数据的修改时。类似DatetimeField的auto_now的功能。
数据类型:字符串
取值范围:模型中用户类型的外键字段名。
注意:该配置将被弃用,它的功能将被UserField取代。
#
computed_fields, 计算字段在模型内定义一个descritor方法,并将此方法通过computed_fields声明为计算字段供前端使用,这种字段称计算字段,仅可读。
例子:
数据类型:数组或无组,元素为dict,有如下属性:
- name: 用于作为计算字段的函数名
- display_name: 显示名,在列表、表单等Label处显示。
- type: 该字段返回的数据类型。
#
annotated_fields, 聚合统计字段使用 Django 的 annotate聚合函数来计算当前模型的统计数值。
例子:
数据类型: dict,key为字段名,value为该字段的参数,包括:
- display_name:显示名,在列表、表单等Label处显示。
- annotation: annotate表达式,必须是Django的聚合函数的表达式。
- type: 该字段返回的数据类型
#
exclude_fields,忽略字段给前端返回数据时,指定排除在外的字段。
例子:
数据格式: list or tuple
#
validators,模型校验规则模型的全局校验规则,即非单个字段的校验,通常用于字段之间的关联校验,如开始时间不能大于结束时间这种校验。
数据类型:list of dict(只有一个校验规则时,可以为dict)。list的元素与dict的属性一样,包含:
- type, 校验类型
- field,校验字段名
- condition_field,依赖的条件字段名
- operator,条件字段比较符
- value,条件字段比较值
validator.type 校验类型
数据类型: string 可选 ondition_required , condition_great , condition_less
ondition_required,有条件的必填
条件字段的条件判断成立后,校验字段必填,如:
condition_great
校验字段值要比条件字段值大。
condition_less
校验字段值要比条件字段值小,与上面 condition_great 相反
validator.field
需要校验的字段名。
数据类型:str
取值范围:模型所有物理字段名
validator.condition_field
满足条件的字段,即被用于比较的字段名。
数据类型:str
取值范围:模型所有物理字段名
validator.operator
条件的操作类型,搭配 value 使用
数据类型:str
取值范围:
- =,等于
- >,大于
- <,小于
- in,在xx范围内
- include,包含
validator.value
条件字段需要满足的值。
数据类型:同condition_field中指定的字段值类型。