自django 2.2 docs开始,建议使用UniqueConstraint
而不是unique_together
,但是该选项不会在django admin中引发ValidationError而不覆盖clean
或{{1} }方法(如果提供了validate_unique
属性。
是否可以使condition
(在django admin中)提高UniqueConstraint
(而不是ValidationError
)而无需自己执行验证逻辑?
答案 0 :(得分:1)
您是正确的,documentation在这里引起误解。它说:
UniqueConstraints
...利用现有的validate_unique()
逻辑,从而启用了两阶段验证。除了IntegrityError
上的save()
之外,在违反ValidationError
的模型验证过程中也会引发UniqueConstraint
。
如果您使用condition
参数,这并不适用。我添加了一个comment on the relevant issue,建议将此添加到文档中。 (更新:此限制现在为documented。)
根据this pull request comment,未实现此操作的原因是……很难。
我认为合适的解决方案是暂时完全忽略部分约束...当前的实现还太幼稚...我怀疑这在所有后端上都很难实现。
当然,正如您所说,您始终可以自己覆盖validate_unique()
。