我注意到一件事,我不知道这是一个真正的问题,还是我做了一些错误的设计.
我有一个模特:
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 方法。
归档时间: |
|
查看次数: |
252 次 |
最近记录: |