如何在Django Model中创建可空字段,不填写时不报错?
Django Model 创建可空字段方案
要实现字段留空不报错,需要搭配使用 null 和 blank 两个字段参数:
null=True:定义数据库层面允许该字段存储 NULL 值,数值、日期、外键等非字符串类型的可空字段必须配置该参数blank=True:定义表单校验层面允许该字段不填值,如果仅需要后台逻辑/ORM 操作时留空、不需要通过表单提交该字段,可以不配置该参数
示例:创建可空的newprice价格字段
假设newprice为小数类型的价格字段,写法如下:
from django.db import models class Goods(models.Model): # 其他原有字段 name = models.CharField(max_length=100) price = models.DecimalField(max_digits=10, decimal_places=2) # 可空的新价格字段 newprice = models.DecimalField( max_digits=10, decimal_places=2, null=True, blank=True )
注意事项
- 字符串类型字段(CharField、TextField)不建议设置
null=True,Django 约定用空字符串''表示字符串空值,仅设置blank=True即可,避免出现 NULL 和空字符串两种空值的逻辑混乱 - 如果是给已有数据的表新增可空字段,需要设置
default=None,或在执行makemigrations时选择为现有数据填充 NULL 值,否则迁移流程会报错
内容的提问来源于stack exchange,提问作者saleh
相关产品推荐
相关产品推荐

