Django为唯一字段上的并发操作形成integrityerror

DRC*_*DRC 6 python django

我注意到一件事,我不知道这是一个真正的问题,还是我做了一些错误的设计.

我有一个模特:

class A(Model):
    name = CharField(unique=True, max_length=255)
Run Code Online (Sandbox Code Playgroud)

和一个链接到A的模型,这个模型有一个clean_name()方法,它检查该字段在db中是否是唯一的(忽略了模型在默认情况下已经这样做的事实,我在这里为这个例子指定了这个).

如果我这样做的话

o = form.save(commit=False)
# xyz
o.save()
Run Code Online (Sandbox Code Playgroud)

#xyz我有另一个客户端插入具有相同name字段值的A对象,o.save()触发Integrityerror异常,正确防止插入重复记录.

我想知道的是如何处理这些情况,我应该o.save()用try/except块包装它,然后填写表单上的错误字段指定选择另一个name值?

这种情况在某种程度上应该发生在每个人身上并且解决方案很糟糕,所以我认为我做的事情非常糟糕.

小智 0

我怀疑情况可能是这样:

仅当在 中设置标志时,模型表单才提供唯一性验证xx_clean()。如果您clean用自己的重写(正如您所拥有的),则需要调用超类的clean(). 请参阅覆盖 clean 方法