gpt4 book ai didi

django - fields.E304 Django 中的反向访问器冲突

转载 作者:行者123 更新时间:2023-12-04 03:06:31 24 4
gpt4 key购买 nike

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

# 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_set但是 Django 不能对两者使用相同的名称。

所以你可以设置一个 related_name在任一或两者上:

class Person2Person(models.Model):
person = models.ForeignKey(Person, related_name='person2persons')
friend = models.ForeignKey(Person, related_name='friends')

现在 Person.friendPerson2Person 相关具有此 Person 的对象作为 friend ,和 Person.person2person那些以这个人为人的人。

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

关于django - fields.E304 Django 中的反向访问器冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41595364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com