Django m2m模型本身与附加属性的关系

Django m2m模型本身与附加属性的关系,django,django-models,many-to-many,Django,Django Models,Many To Many,我试图创建一个具有多对多自我关系的模型,我在代码中添加了以下内容: class Person(models.Model): name = models.CharField(max_length=50) shape_clm = models.ManyToManyField("self", through='Friend', symmetrical=False

我试图创建一个具有多对多自我关系的模型,我在代码中添加了以下内容:

class Person(models.Model):
    name = models.CharField(max_length=50)
    shape_clm = models.ManyToManyField("self", through='Friend',                                                                symmetrical=False) 

    def __str__(self):
        return self.name


class Friend(models.Model):
    pers_one = models.ForeignKey(Person)
    pers_two = models.ForeignKey(Person)
    type = models.CharField(max_length=150)
但是,当我尝试将模型迁移到DB时,出现了以下错误:

Friend.pers_one: reverse accessor for Friend.pers_one clashes with reverse accessor for Friend.pers_two

我正在使用Postgres作为DB服务器,我如何建立这种m2m关系

您需要添加
相关的\u name
关键字参数,否则ORM无法告诉您如何引用这两个字段

class Friend(models.Model):
    pers_one = models.ForeignKey(Person, related_name='pers_ones')
    pers_two = models.ForeignKey(Person, related_name='pers_twos')

相关的\u name
参数添加到
Friend
ModelClass中的
ForeignKey
s:

class Friend(models.Model):
    pers_one = models.ForeignKey(Person, related_name="friends_one")
    pers_two = models.ForeignKey(Person, related_name="friends_two")
    type = models.CharField(max_length=150)

有关
related\u name
的详细信息,请查看。

我在字段中添加了一个related\u name,但错误仍然存在。最后,我将字段unique_together('pers_one'、'pers_two')添加到class Friend中的class Meta中,它工作得非常好,无论如何还是要感谢您的回答