提示:定义模型字段的类型
一、字段类型
- 常用字段
字段名 |
描述 |
备注 |
AutoField |
int 自增 |
必填参数 primary_key=True,无该字段时,django自动创建一个 BigAutoField,一个model不能有两个AutoField字段(不建议手动指定主键) |
BooleanField |
布尔 |
值为True,False |
NullBooleanField |
布尔 |
值为Null,True,False 已弃用(BooleanField(null=True)) |
CharField |
字符串 |
必须提供max_length参数 |
TextField |
文本 |
|
IntegerField |
整型 |
SmallIntegerField(短整型),BigIntegerField(长整型),PositiveIntegerField(正整型),PositiveSmallIntegerField(短正整型) |
DecimalField |
10进制浮点数 |
max_digits表示总位数,decimal_places表示小数 |
FloatField |
浮点数 |
|
DateField |
日期(YYYY-MM-DD) |
auto_now:每次修改时修改为当前日期时间。auto_now_add:新创建对象时自动添加当前日期时间(相当于Python中的datetime.date的实例) |
DatetimeField |
日期(YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) |
相当于Python中的datetime.datetime实例 |
FileField |
文件字段 |
数据库本质为路径保存 |
OneToOneField |
关系字段 |
用于定义一对一关系 |
ForeignKey |
关系字段 |
用来定义多对一关系 |
ManyToManyField |
关系字段 |
用于定义多对多关系 |
二、字段属性
参数 |
描述 |
备注 |
null |
True:允许存储 NULL 值 |
默认False(控制数据库存储,是否允许存储 NULL 值) |
blank |
True:允许为空字符串 |
默认False(控制表单验证,是否允许在表单中留空) |
db_column |
字段名称 |
通常不需要手动指定 |
db_index |
True:创建索引 |
默认False |
default |
默认值 |
|
primary_key |
True:主键 |
每个模型只能有一个字段设置 primary_key=True,通常 Django 会自动添加 AutoField 或 BigAutoField 作为主键 |
unique |
True:唯一值 |
默认False |
max_length |
最大长度 |
|
max_digits |
浮点型最大长度 |
|
decimal_places |
小数点位数 |
|
auto_now |
获取的是当前时间 |
|
choices |
序列 |
STATUS_CHOICES = [(0, ‘java’), (1, ‘python’)] (在表单中会显示为下拉框) |
help_text |
帮助文本 |
表单中显示的帮助文本,用于提供字段的说明 |
三、元信息
ORM对应的类里面包含另一个Meta类,而Meta类封装了一些数据库的信息。主要字段如下:
参数 |
描述 |
db_table |
ORM在数据库中的表名默认是 app_类名,可以通过db_table可以重写表名 |
index_together |
联合索引 |
unique_together |
联合唯一索引 |
ordering |
字段排序(设置该属性,查询到的结果才可以被reverse()) |