小编DRC*_*DRC的帖子

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

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

我有一个模特:

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值?

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

python django

6
推荐指数
1
解决办法
252
查看次数

标签 统计

django ×1

python ×1