我注意到一件事,我不知道这是一个真正的问题,还是我做了一些错误的设计.
我有一个模特:
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
值?
这种情况在某种程度上应该发生在每个人身上并且解决方案很糟糕,所以我认为我做的事情非常糟糕.