fields.E304 Django中的反向存取器冲突

fields.E304 Django中的反向存取器冲突,django,Django,我正在尝试迁移这两个模型: # models.py from django.db import models class Person(models.Model): name = models.CharField(max_length=64) class Person2Person(models.Model): person = models.ForeignKey(Person) friend = models.ForeignKey(Person) 但我有一个

我正在尝试迁移这两个模型:

# models.py

from django.db import models


class Person(models.Model):
    name = models.CharField(max_length=64)


class Person2Person(models.Model):
    person = models.ForeignKey(Person)
    friend = models.ForeignKey(Person)
但我有一个错误:

SystemCheckError: System check identified some issues:

ERRORS:
website.Person2Person.friend: (fields.E304) Reverse accessor for 'Person2Person.friend' clashes with reverse accessor for 'Person2Person.person'.
    HINT: Add or change a related_name argument to the definition for 'Person2Person.friend' or 'Person2Person.person'.
website.Person2Person.person: (fields.E304) Reverse accessor for 'Person2Person.person' clashes with reverse accessor for 'Person2Person.friend'.
    HINT: Add or change a related_name argument to the definition for 'Person2Person.person' or 'Person2Person.friend'.

我想在模型
Person
中建立多对多关系。为什么我的代码错了?我该如何修复它呢?

代码是错误的,因为
Person
将获得一个反向关系,返回到
Person2Person.Person
,以及
Person2Person.friend
;默认名称为
Person.person2person\u set
,但Django不能对两者使用相同的名称

因此,您可以在其中一个或两个上设置
相关的\u名称

class Person2Person(models.Model):
    person = models.ForeignKey(Person, related_name='person2persons')
    friend = models.ForeignKey(Person, related_name='friends')
现在,
Person.friend
与将此
Person
作为朋友的
Person2Person
对象相关,而
Person.Person2Person
与将此Person作为朋友的对象相关


但是,您为什么不在
Person
上使用
ManyToManyField
'self'

错误消息似乎非常清楚,甚至包括一个解决问题的简便提示,您应该阅读并遵循。然而,如果你只是需要一个多对多的关系,为什么你要费心定义Person2Person,而不是简单地在Person上添加一个ManyToManyField?有没有办法禁用反转?是的,相关的名称=“+”非常感谢@Andee!!