Django 模型字段类型总结


Django模型中的常见字段类型

编号 字段类型Filed Types 描述
1 AutoField 如果没有指明主键,就会产生一个自增的主键
2 BigIntegerField 64位的整型数值,从 -2^63 (-9223372036854775808) 到 2^63-1(9223372036854775807)
3 BinaryField 存储二进制码的Field. 只支持bytes 赋值
4 BooleanField 该字段的默认表单控件是CheckboxInput,如果你需要设置null 值,则使用NullBooleanField 来代替BooleanField
5 CharField 用来存储字符串
6 TextField 用来存储大字符串
7 CommaSeparatedIntegerField 一个逗号分隔的整数字段
8 DateField 使用Python的datetime.date实例保存的日期。auto_now = True:每次保存对象时,自动设置该字段为当前时间;auto_now_add=True:对象第一次被创建时自动设置当前时间。需要注意的是,自动保存的时间的时区使用的是默认时区
9 DateTimeField 使用Python的datetime.datetime实例表示的日期和时间
10 DecimalField 用python中 Decimal 的一个实例来表示十进制浮点数
11 DurationField 用来存储一段时间,类似Python中的timedelta
12 EmailField 它和CharField类似,只不过比CharField多了自动校验输入的值是否符合Email格式的功能。它使用 EmailValidator 来验证输入合法性
13 FileField

一个上传文件的字段。它有两个可选属性:
1. FileField.upload_to :它的值是一个本地文件系统的路径,这个路径将被追加到MEDIA_ROOT设置中。MEDIA_ROOT在settings中,用来指定用户上传文件的存放路径。
2. FileField.storage用来指定Storage 对象。例如:
from django.core.files.storage import FileSystemStorage
fs = FileSystemStorage(location=’/media/photos’)
class Car(models.Model):
photo = models.ImageField(storage=fs)

14 FilePathField

如果,你想使用文件系统中的文件,而不是用户上传的文件,请使用FilePathField。例如:from django.conf import settings
class Document(models.Model):
audio = models.FilePathField(path=settings.FILE_PATH_FIELD_DIRECTORY)

15 FloatField 用Python的一个float 实例来表示一个浮点数
16 ImageField 是FileField的子类,比FileField多了有效图片校验功能,确保它是个有效的image
17 IntegerField 整数字段
18 GenericIPAddressField 一个 IPv4 或 IPv6 地址, 字符串格式 (例如 192.0.2.30 或 2a02:42fe::4). 这个字段的默认表单小部件是一个TextInput
19 PositiveIntegerField 类似 IntegerField, 但值必须是正数或者零(0)
20 PositiveSmallIntegerField 小于32767 的正整数
21 SlugField Slug 是一个新闻术语(通常叫做短标题)。一个slug只能包含字母、数字、下划线或者是连字符,通常用来作为短标签。通常它们是用来放在URL里的
22 SmallIntegerField -32768 至 32767的整数
23 TextField 大文本字段。该模型默认的表单组件是Textarea
24 TimeField 时间字段,和Python中 datetime.time 一样
25 URLField 一个CharField 类型的URL
26 UUIDField 一个用来存储UUID的字段。使用Python的UUID类
27 ForeignKey 多对一关系
28 ManyToManyField 多对多关联
29 多对多关联 一对一关联关系