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中,它工作得非常好,无论如何还是要感谢您的回答