Django:为什么有些模型字段会相互冲突?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (5)
  • 关注 (0)
  • 查看 (278)

想要创建一个对象,其中包含到用户的两个链接。例如:

class GameClaim(models.Model):
    target = models.ForeignKey(User)
    claimer = models.ForeignKey(User)
    isAccepted = models.BooleanField()

但是,在运行服务器时,会收到以下错误:

Accessor for field 'target' clashes with related field 'User.gameclaim_set'. Add a related_name argument to the definition for 'target'.
Accessor for field 'claimer' clashes with related field 'User.gameclaim_set'. Add a related_name argument to the definition for 'claimer'.

有哪个大神可以告诉我为什么会显示出错呢?

提问于
用户回答回答于

如果导入了应用程序之上的级别,然后导入应用程序,也会发生这种情况。

myproject/ apps/ foo_app/ bar_app/

用户回答回答于

在将子模块作为应用程序添加到Django项目中时,会遇到这种情况,例如,给定以下结构:

myapp/
myapp/module/
myapp/module/models.py

如果将以下内容添加到已安装的应用程序:

'myapp',
'myapp.module',

Django似乎在处理Myapp.py文件并显示一个报错

'myapp.module',
用户回答回答于
用户回答回答于

一个用于GameClaims User就像target,另一种是为了GameClaims有那个User就像claimer

用户回答回答于

可以使用related_name属性

class GameClaim(models.Model):
    target = models.ForeignKey(User, related_name='gameclaim_targets')
    claimer = models.ForeignKey(User, related_name='gameclaim_users')
    isAccepted = models.BooleanField()

扫码关注云+社区

领取腾讯云代金券