我想创建一个包含 2 个指向用户的链接的对象。例如:
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'.
您能否解释一下我收到错误的原因以及如何解决这些错误?
最佳答案
您有两个 User 的外键。 Django 自动创建从 User 到 GameClaim 的反向关系,通常是 gameclaim_set
。但是,因为您有两个 FK,所以您将有两个 gameclaim_set
属性,这显然是不可能的。所以你需要告诉 Django 为反向关系使用什么名字。
在 FK 定义中使用 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()
关于python - Django:为什么有些模型字段会相互冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1142378/