Python django 2.2 don'中的UniqueConstraint;t引发验证错误

Python django 2.2 don'中的UniqueConstraint;t引发验证错误,python,django,constraints,Python,Django,Constraints,由于django 2.2建议使用UniqueConstraint而不是同时使用unique\u,但如果提供了条件属性,则该选项不会在django admin中引发ValidationError,而不会覆盖clean或validate\u unique方法 在django admin中,是否可以使用UniqueConstraintraiseValidationError(在django admin中),而不是IntegrityError,而无需自己实现验证逻辑?您是对的,这里的错误是误导性的。它说

由于django 2.2建议使用
UniqueConstraint
而不是同时使用
unique\u
,但如果提供了
条件
属性,则该选项不会在django admin中引发ValidationError,而不会覆盖
clean
validate\u unique
方法

在django admin中,是否可以使用
UniqueConstraint
raise
ValidationError
(在django admin中),而不是
IntegrityError
,而无需自己实现验证逻辑?

您是对的,这里的错误是误导性的。它说:

UniqueConstraints
在这方面有所不同,因为它们利用了现有的
validate\u unique()
逻辑,从而支持两阶段验证

它没有说明的是,如果使用
条件
参数,则这不适用。在回答您的问题时,我添加了一个建议,建议将其添加到文档中,以及

没有
条件的
唯一约束
(即非部分唯一约束)在这方面是不同的

据我所知,这项计划没有实施的原因是。。。这很难

我觉得合适的解决方案是暂时完全忽略部分约束。。。当前的实现太幼稚了。。。我怀疑这将是复杂的支持所有后端


当然,正如您所说,您可以随时覆盖
validate_unique()
您自己。

谢谢您的回答。从v3.x开始,validate_unique确实是一种方式。需要强调的一点是,Django会自动将模型中不在表单中的所有字段添加到排除列表中。根据您的设计,您可能希望在调用基类实现之前对其进行过滤以添加/删除某些字段。