我尝试创建一个具有多对多自我关系的模型,我把它放在我的代码中:
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)
但是当我尝试将模型迁移到数据库时,会引发以下错误:
Friend.pers_one: reverse accessor for Friend.pers_one clashes with reverse accessor for Friend.pers_two
我使用Postgres作为数据库服务器,我怎么能建立这个m2m关系?
答案 0 :(得分:0)
您需要添加related_name
关键字参数,否则ORM无法告诉您如何引用任何一个字段。
class Friend(models.Model):
pers_one = models.ForeignKey(Person, related_name='pers_ones')
pers_two = models.ForeignKey(Person, related_name='pers_twos')
答案 1 :(得分:0)
在related_name
ModelClass中向ForeignKey
添加Friend
个参数:
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_name
的详细信息,请查看docs。