在 tortoise.fields.base 中,先定义了 _FieldMeta,然后定义了 Field 继承 _FieldMeta,然后所有字段类型都继承 Field
一:支持的参数
Field参数:
source_field: str 可用此参数指定字段为其他名字,而不使用定义的字段变量名作为表字段
generated:bool 这个字段是否已生成
pk: bool 字段是否为主键
null: bool 字段是否允许为空
default:默认值
unique:字段值是否唯一
index: bool 该字段是否应自行编制索引
description:str 字段描述
validators:此字段的验证器
二:Field的属性
field_type: 字段类型,该字段是Python类型,如果将一个类型添加为mixin,则_FieldMeta将自动设置为该类型。
indexable: bool 该字段是否可索引?如果要设置为不可索引,则设置为 False。
has_db_field: bool 此字段是否有直接对应的数据库字段
skip_to_python_if_native: bool 如果数据库驱动程序本身支持这种 Python 类型,是否跳过它
allows_generated: bool 该字段是否可以由数据库生成?
function_cast: 我们需要应用的转换术语,以防数据库需要仿真帮助。
SQL_TYPE: str SQL 类型作为 DB 将使用的字符串。
GENERATED_SQL: str 指示数据库自动生成此字段的SQL。如果 allows_generated 指定为 True,则此字段必须指定
三:Field的方法
1、to_db_value:从 Python 类型转换为 数据库 类型
2、to_python_value:从 数据库 类型转换为 Python 类型
3、validate:验证给定值是否有效
4、required:返回字段是否为必传
5、constraints:返回字典
6、get_db_field_types:返回此字段的数据库类型
7、get_for_dialect:根据SQL返回属性/方法名称
8、describe:生成字段的描述,参数为布尔值,False则得到python对象,True则得到json对象