我想创建一个包含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参数。
你能否解释为什么我会收到错误以及如何解决这些错误?
你有两个用户外键。Django自动创建一个从User到GameClaim的反向关系,通常是gameclaim_set。但是,由于你有两个FK,因此将具有两个gameclaim_set属性,这显然是不可能的。因此,你需要告诉Django反向关系使用的名称。
Django
User
GameClaim
gameclaim_set
使用related_nameFK定义中的属性。例如
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()