Python 防止Django中外键的排列

Python 防止Django中外键的排列,python,django,Python,Django,我有一个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\u合在一起可以用来确保不能重复输入 例如,如果上表: unique_together = [

我有一个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\u合在一起
可以用来确保不能重复输入

例如,如果上表:

unique_together = ['field_one', 'field_two']
然后,您可以为
field\u one
输入
A
field\u two
输入
B
等值。但是,不能再次输入相同的条目。但这也允许为
字段1
输入
B
,为
字段2
输入
A
,根据我的控制器逻辑,这与
A和B
相同

我需要确保如果为相应字段输入了A和B,则不能再次输入B和A


如何仅允许具有唯一组合的条目

我将覆盖模型的
clean
方法,并提出
ValidationError
。这是一个可以对模型实施额外约束的地方

但是请注意,只有在ModelForm的有效()之后才会调用此方法


样本清洁验证代码

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')

这是可行的,但是
ValidationError
给了我
“ValidationError”对象没有属性“error\u dict”
error。