首页
学习
活动
专区
圈层
工具
发布

Django进阶-2-ORM字段

Django 提供了很多字段类型,比如 URL/Email/IP/ 但是 mysql 数据没有这些类型,这类型存储到数据库上本质是字符串数据类型,主要目的是为了封装底层 SQL 语句。

① 字符串类

代码语言:javascript
代码运行次数:0
复制
EmailField(CharField)
IPAddressField(Field)
URLField(CharField)
SlugField(CharField)
UUIDField(Field)
FilePathField(Field)
FileField(Field)
ImageField(FileField)
CommaSeparatedIntegerField(CharField)

models.CharField 对应的是 mysql 的 varchar 数据类型。

  • char 和 varchar 的区别

char 和 varchar 的共同点是存储数据的长度,不能超过 max_length 限制;不同点是 varchar 根据数据实际长度存储,char 按指定 max_length() 存储数据;所有 char 更节省硬盘空间。

② 时间字段

代码语言:javascript
代码运行次数:0
复制
models.DateTimeField(null=True)
date = models.DateField()

③ 数字字段

代码语言:javascript
代码运行次数:0
复制
# 总长度最大30位,小数位10位
(max_digits=30, decimal_places=10)

# 数字
# 整型
num = models.IntegerField()
# 浮点型
floats = models.FloatField()
# 精确浮点
price = models.DecimalField(max_digits=8, decimal_places=3)

④ 枚举字段

代码语言:javascript
代码运行次数:0
复制
choice = {
  (1, 'VIP'),
  (2, 'SVIP'),
  (3, '普通用户')
}

# 枚举类型
lover = models.IntegerField(choices=choice)

⑤ 其它字段

代码语言:javascript
代码运行次数:0
复制
# 设置索引
db_index = True

# 设置唯一索引
unique(唯一) = True

# 联合唯一索引
class Meta:
  unique_together = (
    ('email', 'name'),
  )

# 联合索引
index_together = (
  ('telephone', 'email'),
)

# 多对多操作
ManyToManyField(RelatedField)
下一篇
举报
领券