Ole*_*nko 169 python django django-models
我想创建一个包含2个用户链接的对象.例如:
class GameClaim(models.Model):
target = models.ForeignKey(User)
claimer = models.ForeignKey(User)
isAccepted = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)
但是在运行服务器时出现以下错误:
字段'target'的访问者与相关字段'User.gameclaim_set'发生冲突.将related_name参数添加到'target'的定义中.
字段'claimer'的访问者与相关字段'User.gameclaim_set'发生冲突.将related_name参数添加到'claimer'的定义中.
你能解释一下为什么我会收到错误以及如何修复它们吗?
Dan*_*man 290
用户有两个外键.Django自动创建一个从User回到GameClaim的反向关系,这通常是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()
Run Code Online (Sandbox Code Playgroud)
该User模型试图创建具有相同名称的两个领域,一个是GameClaims说有User作为target,而另一个用于GameClaims该有User作为claimer.这是文档related_name,这是Django允许您设置属性名称的方式,因此自动生成的属性不会发生冲突.
| 归档时间: |
|
| 查看次数: |
34922 次 |
| 最近记录: |