我想创建一个包含2个用户链接的对象.例如:

class GameClaim(models.Model):
    target = models.ForeignKey(User)
    claimer = models.ForeignKey(User)
    isAccepted = models.BooleanField()

但我在运行服务器时收到以下错误:

  • 字段‘target’的访问器与相关字段‘User.gameclaim_set’冲突.将Related_Name参数添加到‘target’的定义中.

  • 字段"claimer"的访问器与相关字段"User"冲突.游戏声明"集".在"claimer"的定义中添加一个相关的_name参数.

您能解释一下为什么我会收到这些错误,以及如何修复它们吗?

推荐答案

您对用户有两个外键.Django自动创建从用户返回到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()

Django相关问答推荐

在保存新实例之前删除一个实例(Django模型保存方法)

Django-将html数据保存到quillfield中

将所有守护用户对象权限从一个Django用户重新分配给另一个Django用户

如何在Django模板中为无效词典查找打开异常?

django-filter compose 过滤的 url

如何自动删除 Django 模型中的字段值?

Django rest framework, AttributeError: 'str' object has no attribute 'data' 无法使用表单上传图片

如何在 Django 模板中的计数器上进行 for 循环中断?

包含资源时,DRF 返回我的软删除记录

如何根据查询集中的条件返回多个聚合?

在 Scrapy 中访问 django 模型

直接在Django的模板中访问ForeignKey

Ruby on Rails 会影响网页的外观吗?

django 管理列表中的外键显示

Django Admin:如何在内联中显示模型上定义的属性?

如何在 Django 中使用动态外键?

如何在 django 中将多张图片上传到博客文章

Django 中的 Python 日志(log)记录

Django: Force强制 Select 相关?

从 git 存储库中删除并忽略所有具有扩展名的文件