gpt4 book ai didi

database - 现场冲突的django related_name

转载 作者:太空狗 更新时间:2023-10-30 01:40:40 26 4
gpt4 key购买 nike

我的模型发生了现场冲突:

class Visit(models.Model):
user = models.ForeignKey(User)
visitor = models.ForeignKey(User)

Error: One or more models did not validate:
profiles.visit: Accessor for field 'user' clashes with related field 'User.visit_set'. Add a related_name argument to the definition for 'user'.
profiles.visit: Accessor for field 'visitor' clashes with related field 'User.visit_set'. Add a related_name argument to the definition for 'visitor'.

在访问者字段上使用什么是合理的“related_field”?这个模型 基本上代表对 a 进行的访问 特定用户的个人资料。

我还应该用 ManyToManyField 替换任何外键吗?逻辑有点困惑。

编辑:这似乎解决了它,但我不确定这是否是我想要的。 :)

 class Visit(models.Model):
user = models.ForeignKey(User)
visitor = models.ForeignKey(User, related_name='visitors')

最佳答案

当您有一个 ForeignKey 时,它会创建一个以模型名称加上 _set 命名的属性到引用模型。这里的问题是两个外键都想在 User 上创建一个名为 visit_set 的属性。解决方案是为每个外键添加不同的相关名称。

通常,我对相关名称使用复数形式。在这种情况下,我会在相关名称中添加一个“as”子句:

class Visit(models.Model):
user = models.ForeignKey(User, related_name="visitsAsUser")
visitor = models.ForeignKey(User, related_name="visitsAsVisitor")

您不需要 ManyToManyField,除非您可以让每个 Visit 有零个或多个访问者,或者每个 Visit 有用户。

关于database - 现场冲突的django related_name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4658747/

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