对于我的一个模型,我需要确保某些行的unicity,但仅限于特定情况。只有“已验证”行应遵循此约束。在
基本上,我期待的是
class MyModel(models.Model):
field_a = models.CharField()
field_b = models.CharField()
validated = models.BooleanField(default=False)
class Meta:
unique_together = (('field_a', 'field_b', 'validated=True'),)
除了前面的答案,您可以覆盖
save()
方法。应该是这样的:现在不需要调用
clean()
方法。在如果使用Django 2.2,可以使用UniqueConstraint+ 这里有一个例子
这是source
(编写时,Django<;2.2)
对于Django中的
unique_together
,您不能这样做,大概是因为并不是所有的db后端都能够支持它。在您可以在应用程序层使用模型验证来完成:
https://docs.djangoproject.com/en/dev/ref/models/instances/#validating-objects
例如
请注意,您可能需要手动调用模型验证,即
^{pr2}$保存模型时不会自动执行此操作。另一方面,当使用ModelForm时,它是自动完成的,即
相关问题 更多 >
编程相关推荐