一尘不染

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

django

我想创建一个包含2个指向用户的链接的对象。例如:

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

但是运行服务器时出现以下错误:

  • 字段“目标”的访问器与相关字段“ User.gameclaim_set”冲突。在’target’的定义中添加related_name参数。

  • 字段“ claimer”的访问器与相关字段“ User.gameclaim_set”冲突。在“ claimer”的定义中添加一个related_name参数。

你能否解释为什么我会收到错误以及如何解决这些错误?


阅读 308

收藏
2020-03-29

共1个答案

一尘不染

你有两个用户外键。Django自动创建一个从UserGameClaim的反向关系,通常是gameclaim_set。但是,由于你有两个FK,因此将具有两个gameclaim_set属性,这显然是不可能的。因此,你需要告诉Django反向关系使用的名称。

使用related_nameFK定义中的属性。例如

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