Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django unique=除空白值外为真_Python_Django - Fatal编程技术网

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,因为唯一性检查只允许一个空字符串。