除空值外,Django unique = True

时间:2012-03-21 15:53:32

标签: python django

我有这个型号:

class Part(models.Model):
    serial_number = models.CharField(max_length=15, null=True, blank=True, validators=[validate_serial], unique=True)
    ....

serial_number可以为空并且为null,因为所有部件都不一定具有序列号。但是,在存储没有序列号的一个部件后,空白不再是唯一的,我收到此错误:

此序列号的部分已存在。

有解决方法吗?我已经看过this question,但我没有模型表格。我要么使用管理员,要么直接在代码中执行。

2 个答案:

答案 0 :(得分:4)

我遇到了同样的问题并通过在保存时为字段指定None来修复它。

指定default=None也可能有所帮助。

答案 1 :(得分:-1)

我非常确定在唯一性约束中不考虑空值。解决这个问题的方法是不使用null,而是使用空字符串。因此,请删除null=True