1. first_name = models.CharField(max_length=100)
  2. # 中的 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

  1. on_delete=None, # 删除关联表中的数据时,当前表与其关联的field的行为
  2. on_delete=models.CASCADE, # 删除关联数据,与之关联也删除
  3. on_delete=models.DO_NOTHING, # 删除关联数据,什么也不做
  4. on_delete=models.PROTECT, # 删除关联数据,引发错误ProtectedError
  5. # models.ForeignKey('关联表', on_delete=models.SET_NULL, blank=True, null=True)
  6. on_delete=models.SET_NULL, # 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空,一对一同理)
  7. # models.ForeignKey('关联表', on_delete=models.SET_DEFAULT, default='默认值')
  8. on_delete=models.SET_DEFAULT, # 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值,一对一同理)
  9. on_delete=models.SET, # 删除关联数据
  10. # a. 与之关联的值设置为指定值,设置:models.SET(值)
  11. # b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)