在設計模型類時,字段類型的選擇至關重要,對項目的開發,甚至性能都會有影響。下面我列舉出了在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。