Django 提供了很多字段类型,比如 URL/Email/IP/ 但是 mysql 数据没有这些类型,这类型存储到数据库上本质是字符串数据类型,主要目的是为了封装底层 SQL 语句。
① 字符串类
EmailField(CharField)
IPAddressField(Field)
URLField(CharField)
SlugField(CharField)
UUIDField(Field)
FilePathField(Field)
FileField(Field)
ImageField(FileField)
CommaSeparatedIntegerField(CharField)
models.CharField 对应的是 mysql 的 varchar 数据类型。
char 和 varchar 的共同点是存储数据的长度,不能超过 max_length 限制;不同点是 varchar 根据数据实际长度存储,char 按指定 max_length() 存储数据;所有 char 更节省硬盘空间。
② 时间字段
models.DateTimeField(null=True)
date = models.DateField()
③ 数字字段
# 总长度最大30位,小数位10位
(max_digits=30, decimal_places=10)
# 数字
# 整型
num = models.IntegerField()
# 浮点型
floats = models.FloatField()
# 精确浮点
price = models.DecimalField(max_digits=8, decimal_places=3)
④ 枚举字段
choice = {
(1, 'VIP'),
(2, 'SVIP'),
(3, '普通用户')
}
# 枚举类型
lover = models.IntegerField(choices=choice)
⑤ 其它字段
# 设置索引
db_index = True
# 设置唯一索引
unique(唯一) = True
# 联合唯一索引
class Meta:
unique_together = (
('email', 'name'),
)
# 联合索引
index_together = (
('telephone', 'email'),
)
# 多对多操作
ManyToManyField(RelatedField)