在设计模型类时,字段类型的选择至关重要,对项目的开发,甚至性能都会有影响。下面我列举出了在Django中,设计模型类时常用的字段类型,以对应MySQL为例。
自增类型:
AutoField 能存储11个字节的整数,对应MySQL中的int(11),自增主键,Django是默认提供该字段的。
二进制类型:
BinaryField 可存入二进制数据。
布尔类型:
BooleanField 能存储1个字节的整数(0:False,1:True),对应MySQL中的tinyint(1)
整型:
PositiveSmallIntegerField 能存储5个字节的正整数。
SmallIntegerField 能存储6个字节的整数。
PositiveIntegerField 能存储10个字节的正整数。
IntegerField 能存储11个字节的整数。
BigIntegerField 能存储20个字节的整数。
字符型:
CharField 对应MySQL中的varchar,需要用max_length参数来指定长度。
TextField 对应MySQL中的longtext。
日期时间类型:
DateField 对应MySQL中的date
DateTimeField 对应MySQL中的datetime
TimeField 对应MySQL中的time
浮点型:
FloatField
DecimalField
DecimalField相比于FloatField更加精确。
关系类型:
ForeignKey 外键关联,实现一对多。
OneToOneField 外键关联,实现一对一,继承自ForeignKey,其实就是添加了一个唯一索引unique。
ManyToManyField 外键关联,实现多对多,本质上其实是创建了一张中间表来实现多对多的关联。
其他类型:
EmailField 继承自CharField,实现了对email的特殊处理。
FileField 继承自CharField,实现了对文件的特殊处理。
ImageField 继承自FileField,用来处理图片。
URLField 继承自CharField,实现了对URL的特殊处理。
UUIDField 对应MySQL中的char(32),用来存放生成的唯一id。