first_name = models.CharField(max_length=100)
# 中的 CharField
1. 非关系类型
1.1. 文本
NameOfField |
字段类型 |
描述 |
默认值 |
注意 |
字符串 |
CharField |
标签 input text |
|
必须 max_length 参数 |
大量文本内容 |
TextField |
标签 Textarea |
|
max_length 只作用于前端页面 |
短标签 |
SlugField |
某种东西的简短标签,包含字母、数字、下划线或者连接线,通常用于URLs中。 |
max_length=50 |
1.2. 日期和时间
NameOfField |
字段类型 |
描述 |
默认值 |
注意 |
日期 |
DateField |
标签 TextInput |
|
auto_now=True 最后修改时间;auto_now_add=True 创建时间(不可修改) |
日期时间 |
DateTimeField |
比 DateField 多了时分秒,其他方法用途都一样 |
|
|
时间 |
TimeField |
同上,只时分秒 |
|
1.3. 数字
NameOfField |
字段类型 |
描述 |
默认值 |
注意 |
固定精度的十进制小数 |
DecimalField |
|
|
必须 max_digits:最大的位数,必须大于或等于小数点位数;必须 decimal_places:小数点位数,精度。(比如 最大999,带2位小数:max_digits=5, decimal_places=2) |
整数 |
IntegerField |
标签 NumberInput |
取值在 -2147483648到2147483647 |
|
小整数 |
SmallIntegerField |
|
包含-32768到32767 |
|
大整数 |
BigIntegerField |
64位整数(非自增),标签 TextInput |
-9223372036854775808 到9223372036854775807 |
|
正整数 |
PositiveIntegerField |
|
0 到 2147483647 |
|
较小的正整数 |
PositiveSmallIntegerField |
|
0 到 32767 |
|
浮点数 |
FloatField |
|
逗号分隔的整数 |
CommaSeparatedIntegerField |
1.4. 布尔值
NameOfField |
字段类型 |
描述 |
默认值 |
注意 |
布尔值 |
BooleanField |
标签 CheckboxInput |
None |
|
可为空布尔值 |
NullBooleanField |
同上 |
|
可接收 Null 值 |
1.5. 其他
NameOfField |
字段类型 |
描述 |
默认值 |
注意 |
邮箱 |
EmailField |
可以使用 Django EmailValidator 验证合法性 |
max_length=254 |
|
上传文件 |
FileField |
标签 ClearableFileInput,真实文件保存在文件系统,只记录路径 |
max_length=100 |
具体可参考上传文件 |
文件路径 |
FilePathField |
|
|
|
图像 |
ImageField |
URL地址字符串 |
URLField |
max_length=200 |
1.6. 独一无二
NameOfField |
字段类型 |
描述 |
默认值 |
注意 |
自增整数 |
AutoField |
Django 自动添加 |
|
非要自己设置,必须primary_key=True |
IP地址 |
GenericIPAddressField |
IPv4/IPv6,标签 TextInput |
protocol=both |
protocol 可选 ipv4 / ipv6 |
通用唯一识别码 |
UUIDField |
char(32),自增主键的最佳替代品 |
|
数据库无法自动生成,需要 default 参数,比如 id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) |
2. 关系类型
字段类型 |
描述 |
参数 |
ForeignKey |
多对一(放在多的一边) |
to:对应模型(必须在第一位) on_delete:删除时 limit_choices_to:限制所能关联的对象(常用于 admin 管理后台) |
OneToOneField |
|
|
ManyToManyField |
|
on_delete
on_delete=None, # 删除关联表中的数据时,当前表与其关联的field的行为
on_delete=models.CASCADE, # 删除关联数据,与之关联也删除
on_delete=models.DO_NOTHING, # 删除关联数据,什么也不做
on_delete=models.PROTECT, # 删除关联数据,引发错误ProtectedError
# models.ForeignKey('关联表', on_delete=models.SET_NULL, blank=True, null=True)
on_delete=models.SET_NULL, # 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空,一对一同理)
# models.ForeignKey('关联表', on_delete=models.SET_DEFAULT, default='默认值')
on_delete=models.SET_DEFAULT, # 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值,一对一同理)
on_delete=models.SET, # 删除关联数据
# a. 与之关联的值设置为指定值,设置:models.SET(值)
# b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)