运维咖啡吧

享受技术带来的乐趣,体验生活给予的感动

Django Model字段类型

CharField

字符串字段

必选参数,用于定义字段长度

IntegerField

整数字段,记录值的范围从-2147483648到2147483647

SmallIntegerField

就像IntegerField,但其取值范围为-32768到32767

BigIntegerField

就像IntegerField,但其取值范围为-9223372036854775808到9223372036854775807

BooleanField

一个true/false字段,例如is_superuser之类的字段,判断是否是超级管理员的就非常适合用BooleanField

DateField

日期,在 Python 中用一个 datetime.date 实例表示

每次保存时,都将字段值设置为当前时间,通常用于保存数据的更新日期

只有在调用Model.save()时该字段才会自动更新。当以其他方式对其他字段进行更新时,如QuerySet.update()该字段不会被更新

当第一次创建对象时,自动将该字段设置为现在,通常用于保存数据的创建日期

DateTimeField

日期和时间,在 Python 中用一个 datetime.datetime 实例表示。与 DateField 一样,使用相同的额外参数

TextField

一个大的文本字段,最大可以存储4G的数据

TimeField

一个时间字段,在 Python 中用 datetime.time 实例表示。接受与 DateField 相同的自动填充选项

URLField

一个URL存储字段,像所有的CharField子类一样,URLField接受可选的max_length参数。如果你没有指定max_length参数,默认为200

UUIDField

一个用于存储通用唯一标识符的字段。使用Python的UUID类

import uuid
from django.db import models

class MyUUIDModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

EmailField

一个CharField类型的字段,仅在数据校验时会检验存储的数据是否符合电子邮件格式

GenericIPAddressField

IPv4或IPv6地址,仅在数据校验是会校验存储的数据是否符合IP地址格式

JSONField

一个用于存储JSON编码数据的字段,需要后端数据库支持JSON存储

DecimalField

一个固定精度的十进制数,在 Python 中用一个 Decimal 实例来表示

数字中允许的最大位数。请注意,这个数字必须大于或等于 decimal_places

与数字一起存储的小数位数

FloatField

一个float实例表示的浮点数

FloatField类有时会与DecimaField类混淆,虽然它们都表示实数,但他们表示的方式不同。FloatField内部使用Python的float类型,而DecimalField则使用Python的Decimal类型

DurationField

一个用户存储时间段的字段,在Python中用timedelta建模,不常用

SlugField

一个用户存储slug的字段,Slug是一个简单的标签,只包含字母、数字、下划线或连接符,一般用在URL中

可以指定max_length,如果没有指定,则默认长度为50

如果为True,该字段除了接受ASCII字母外,还接受Unicode字母,默认为False

FileField

一个文件上传字段

ImageField

继承FileField的所有属性和方法,但也验证上传的对象是有效的图像

FilePathField

用户存储文件路径,本质上还是一个CharField,但其选择仅限于文件系统中某个目录下的文件名

AutoField

一个IntegerField,根据可用ID自动递增,默认主键ID使用AutoField类型,范围从

SmallAutoField

就像AutoField,但其取值范围为1到32767

BigAutoField

就像AutoField,但其取值范围从1到9223372036854775807

PositiveIntegerField

就像IntegerField一样,但必须是正值或零,记录值的范围从0到2147483647

PositiveBigIntegerField

就像PositiveIntegerField一样,但记录值的范围值从0到9223372036854775807

PositiveSmallIntegerField

就像PositiveIntegerField一样,但记录值的范围是从0到32767

BinaryField

一个用于存储原始二进制数据的字段,很少用,二进制数据也不建议存储在数据库中