我想创建一个包含 2 个指向用户的链接的对象。例如:
class GameClaim(models.Model): target = models.ForeignKey(User) claimer = models.ForeignKey(User) isAccepted = models.BooleanField()
但是在运行服务器时出现以下错误:
字段“目标”的访问器与相关字段“User.gameclaim_set”发生冲突。将related_name 参数添加到“目标”的定义中。
字段“claimer”的访问器与相关字段“User.gameclaim_set”发生冲突。在“claimer”的定义中添加一个related_name 参数。
您能否解释一下为什么我会收到错误以及如何修复它们?
您有两个用户的外键。Django 自动创建从 User 到 GameClaim 的反向关系,通常是gameclaim_set. 但是,因为您有两个 FK,所以您将有两个gameclaim_set属性,这显然是不可能的。所以你需要告诉 Django 为反向关系使用什么名字。
gameclaim_set
使用related_nameFK 定义中的属性。例如
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()