Django:外键冲突的反向访问器

Rob*_*Rob 93 python django

我有两个继承自基类的Django模型:

- Request
    - Inquiry
    - Analysis
Run Code Online (Sandbox Code Playgroud)

Request有两个外键用于内置User模型.

create_user = models.ForeignKey(User, related_name='requests_created')
assign_user = models.ForeignKey(User, related_name='requests_assigned')
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我收到了错误

Reverse accessor for 'Analysis.assign_user' clashes with reverse accessor for 'Inquiry.assign_user'.

我读过的所有内容都说设置related_name应该可以防止冲突,但我仍然会遇到同样的错误.谁能想到为什么会发生这种情况?谢谢!

Dan*_*man 115

related_name将确保字段彼此不冲突,但您有两个模型,每个模型都包含这两个字段.您需要在每个模型中添加具体模型的名称,您可以使用一些特殊的字符串替换:

 create_user = models.ForeignKey(User, related_name='%(class)s_requests_created')
Run Code Online (Sandbox Code Playgroud)

  • @MatthewDrill 我提交了一个编辑来纠正它,同时尝试 https://docs.djangoproject.com/en/1.10/topics/db/models/#be-careful-with-related-name-and-related-query -姓名 (2认同)
  • 新的文档链接:https://docs.djangoproject.com/en/3.2/ref/models/fields/#django.db.models.ForeignKey.lated_name (2认同)