域 类型 (Field types)
一、数值类
1、整型
(1)IntegerField
整型,范围 [-2147483648, 2147483647] ,即 [-2^31, 2^31-1],32位系统能够存储的最大的符号型整型常量 2147483647 (首位为符号位,又有0占位,故而是2^31-1)
(2)SmallIntegerField
短(小)整型,取值范围依赖于数据库类型,范围 [-32768, 32767] 适用于所有 Django支持的数据库,即 [-2^15, 2^15-1]
(3)BigIntegerField
长(大)整型,范围 [-9223372036854775808, 9223372036854775807],即 [-2^63, 2^63-1],64位系统能够存储的最大的符号型整型常量 9223372036854775807
(4)CommaSeparatedIntegerField
带逗号的整数,已废弃
原文:CommaSeparatedIntegerField is removed except for support in historical migrations.
(5)PositiveIntegerField
非负整型,范围 [0, 2147483647],即 [0, 2^31-1]
(6)PositiveSmallIntegerField
非负短整型,取值范围依赖于数据库类型,范围 [0, 32767] 适用于所有 Django支持的数据库,即 [0, 2^15-1]
2、浮点型
(1)FloatField
浮点型
(2)DecimalField
高精度浮点型,一般用以存储高精确值,如金额
二、布尔
(1)BooleanField
布尔类型,只允许 true/false 两个值
(2)NullBooleanField
可空布尔类型,允许为 null
三、字符类
(1)CharField
普通字符型
(2)TextField
文本型,长字符型
四、时间类
(1)TimeField
时间类
(2)DateField
日期类
(3)DateTimeField
日期时间类
(4)DurationField
期间类
五、其他
1、地址类
(1)FilePathField
文件路径
(2)IPAddressField
点分十进制表示的 IP 地址,如 127.0.0.1,建议使用 GenericIPAddressField 代替
(3)GenericIPAddressField
通用IP地址,同时支持IP v4和 IP v6,是 IPAddressField 的加强版
(4)EmailField
邮件地址
(5)URLField
URL地址
(6)SlugField
标准URL,只支持字母、数字、下划线、连字符
2、字节类
(1)BinaryField
3、ID类
(1)AutoField
自增主键,整型类
(2)BigAutoField
自增主键,大整型类
(3)UUIDField
UUID类型
关联 域(Relationship fields)
一、ForeignKey
1、作用
关联外键,两个必须项:依赖对象 和 删除模式
2、属性
(1)on_delete
本记录删除时,关联记录作何种关联动作
[1] CASCADE:级联删除
[2] PROTECT:受保护,不允许删除,抛出 ProtectedError
[3] SET_NULL:置空
[4] SET_DEFAULT:恢复默认
[5] SET():方法引用
[6] DO_NOTHING:无动作
(2)limit_choices_to
(3)related_name
(4)related_query_name
(5)to_field
(6)db_constraint
(7)swappable
二、OneToOneField
1、作用
2、属性
(1)parent_link
三、ManyToManyField
1、作用
2、属性
(1)related_name
(2)related_query_name
(3)limit_choices_to
(4)symmetrical
(5)through
(6)through_fields
(7)db_table
(8)db_constraint
(9)swappable
域 选项(Field options)
(1)null
布尔类型值,用以声明数据库中该字段是否可以为空,默认 False
(2)blank
布尔类型值,用以声明表单中该字段是否可以为空,默认 False
(3)default
默认值,必须为可调对象,类实例、set、list、lambdas 不能作为默认值
外键类型的默认,应为外键值本身,而不是外键的实例
(4)choices
二元元组的列表,如 [('a','A'), ('b', 'B'), ('c', 'C')],二元元组的第一个值用于存储数据库,第二个值用于 表单显示
类似于 html 中的 下拉框 select下 option 的 value 和 text
(5)primary_key
布尔类型值,用以声明主键约束,当声明了 primary_key=True时,则必须同时声明 null=False 且 unique=True
当 模型所有属性(字段)都未声明 主键约束时,Django自动创建一个自增属性作为 主键约束
(6)unique
布尔类型值,用以声明唯一性,当执行 save() 时,该字段若存在重复值,则报出 django.db.IntegrityError 错误
unique 对 外键 ManyToManyField 和 OneToOneField 是无效的
声明 unique=True 时,Django自动为之创建 索引
(7)unique_for_date
布尔类型值,用以声明日期唯一性,原则与 unique 类似
(8)unique_for_month
布尔类型值,用以声明月份唯一性,原则与 unique 类似
(9)unique_for_year
布尔类型值,用以声明年份唯一性,原则与 unique 类似
(10)editable
布尔类型值,用以声明是否可编辑,默认 True
当声明 editable=False 时,字段将不显示在表单内,且表单提交时忽略该字段
(11)validators
校验器,类型为校验函数的列表
(12)error_messages
字典类型,用以指定值错误时的抛出信息
支持 null, blank, invalid, invalid_choice, unique 和 unique_for_date 作为字典的键
(13)help_text
字符类型,用以指定表单提示信息,类似 html 中的 tip
(14)verbose_name
字符类型,用以指定外键信息,当外键不指定该属性时,Django自动以该字段名为值,并替换下划线为空格
(15)db_column
字符型,用以指定 数据库列名,尤其当 列名为SQL或Python保留字时有效
不指定该值时,自动以字段名为数据库列名
(16)db_index
布尔类型值,用以指定是否为该数据库列 创建索引,默认False
(17)db_tablespace
字符类型,用以声明索引的名称,当且仅当 db_index=True 时有效
域 属性
(1) auto_created
(2)concrete
(3) hidden
(4) is_relation
(5) model
域 函数/方法
(1)get_internal_type()
(2)db_type()
(3)rel_db_type()
(4)get_prep_value()
(5)get_db_prep_value()
(6)from_db_value()
(7)get_db_prep_save()
(8)pre_save()
(9)to_python()
(10)value_from_object()
(11)value_to_string()
(12)formfield()
(13)deconstruct()
域 关联属性
(1)many_to_many
(2)many_to_one
(3)one_to_many
(4)one_to_one
(5)related_model
参考资料:
Django中文官方:https://docs.djangoproject.com/zh-hans/2.2/
Django模型域中文:https://docs.djangoproject.com/zh-hans/2.2/ref/models/fields/