python - Django:为什么有些模型字段会相互冲突?

标签 python django django-models

我想创建一个包含 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/

相关文章:

python - 非常简单的 Django 表单,用于统计单词数

python - 如何在多个服务器之间负载平衡 celery 任务?

python - 使用 django-import-export 反向外键

django.core.exceptions.ImproperlyConfigured : The TEMPLATE_DIRS setting must be a tuple. 请修复您的设置

django - 如何使用带有 WHERE 子句的 Django ORM 连接三个表

python - 我可以在 django 模型字段中添加帮助文本吗

Python惰性列表

python - 尽管 CNN 在训练和测试方面具有非常好的准确性,但在随机图像上表现不佳

python - cherrypy动态添加对象

django - redis 正在运行,但我得到 "Error 111 connecting to localhost:6379. Connection refused"