Python Django unique=除空白值外为真
我有这个模型:Python Django unique=除空白值外为真,python,django,Python,Django,我有这个模型: class Part(models.Model): serial_number = models.CharField(max_length=15, null=True, blank=True, validators=[validate_serial], unique=True) .... 序列号可以为空,因为所有零件不一定都有序列号。但是,在存储一个没有序列号的零件后,blank不再是唯一的,我得到以下错误: 具有此序列号的零件已存在 有解决办法吗?我已经看过了
class Part(models.Model):
serial_number = models.CharField(max_length=15, null=True, blank=True, validators=[validate_serial], unique=True)
....
序列号可以为空,因为所有零件不一定都有序列号。但是,在存储一个没有序列号的零件后,blank不再是唯一的,我得到以下错误:
具有此序列号的零件已存在
有解决办法吗?我已经看过了,但是我没有模型。我要么使用admin,要么直接在代码中使用它。我很确定在唯一性约束中不会考虑空值。解决这个问题的方法是不要使用null,而是使用空字符串。因此,remove
null=True
我遇到了同样的问题,并通过在保存时为字段指定None
来修复它
指定
default=None
也会有帮助。如果使用admin,则可以定义自定义模型表单。我在你链接到的答案中展示了如何。如果您是在代码中执行此操作,只需设置part.serial_number=None
,而不是使用“”来表示空值。是的,您可以在唯一列中包含多个null。但是,OP希望允许多个空值。因此,它们必须允许null,因为唯一性检查只允许一个空字符串。