我有一个 django 模型如下:
class ModelName(models.Model):
field_one = models.ForeignKey(Table_One, related_name="field_one")
field_two = models.ForeignKey(Table_One, related_name="field_two")
我知道 unique_together 可用于确保不会出现重复条目。
例如,如果对于上表:
unique_together = ['field_one', 'field_two']
然后您可以输入值,例如 A 用于 field_one 和 B 用于 field_two。但是,您不能再次进行相同的输入。但这也允许 field_one 的条目 B 和 field_two 的 A,根据我的 Controller 逻辑,这是相同的作为 A 和 B。
我需要确保如果在各自的字段中输入了 A 和 B,则不能再次输入 B 和 A。
如何只允许输入唯一组合?
请您参考如下方法:
示例干净的验证代码,
from django.db.models import Q
def clean(self):
mn = ModelName.objects.filter(Q(field_one=self.field_one,field_two=field_two)|Q(field_one=self.field_two,field_two=field_one))
if mn.exists():
raise ValidationError('Already exist')
