Python django 2.2 don'中的UniqueConstraint;t引发验证错误
由于django 2.2建议使用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,而无需自己实现验证逻辑?您是对的,这里的错误是误导性的。它说
UniqueConstraint
而不是同时使用unique\u
,但如果提供了条件
属性,则该选项不会在django admin中引发ValidationError,而不会覆盖clean
或validate\u unique
方法
在django admin中,是否可以使用UniqueConstraint
raiseValidationError
(在django admin中),而不是IntegrityError
,而无需自己实现验证逻辑?您是对的,这里的错误是误导性的。它说:
UniqueConstraints
在这方面有所不同,因为它们利用了现有的validate\u unique()
逻辑,从而支持两阶段验证
它没有说明的是,如果使用条件
参数,则这不适用。在回答您的问题时,我添加了一个建议,建议将其添加到文档中,以及
没有条件的唯一约束
(即非部分唯一约束)在这方面是不同的
据我所知,这项计划没有实施的原因是。。。这很难
我觉得合适的解决方案是暂时完全忽略部分约束。。。当前的实现太幼稚了。。。我怀疑这将是复杂的支持所有后端
当然,正如您所说,您可以随时覆盖validate_unique()
您自己。谢谢您的回答。从v3.x开始,validate_unique确实是一种方式。需要强调的一点是,Django会自动将模型中不在表单中的所有字段添加到排除列表中。根据您的设计,您可能希望在调用基类实现之前对其进行过滤以添加/删除某些字段。