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


113

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

- Request
    - Inquiry
    - Analysis

请求具有两个内置用户模型的外键。

create_user = models.ForeignKey(User, related_name='requests_created')
assign_user = models.ForeignKey(User, related_name='requests_assigned')

由于某种原因,我遇到了错误

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

我读过的所有内容都说设置related_name应当可以防止冲突,但是我仍然遇到相同的错误。谁能想到为什么会这样?谢谢!


1
能否请您发表您的模型定义,包括InquiryAnalysis他们对关系Request
dm03514

Django 1.9中相关名称的更新链接
2016年

Answers:


138

这样related_name可以确保各个字段之间不会发生冲突,但是您有两个模型,每个模型都具有这两个字段。您需要在每个模型中放置具体模型的名称,您可以使用一些特殊的字符串替换来做到这一点:

 create_user = models.ForeignKey(User, related_name='%(class)s_requests_created')

1
您答案中的链接已消失。
Matt D

2
@MatthewDrill我提交了一个修改以更正它,同时尝试docs.djangoproject.com/en/1.10/topics/db/models/…–
Ivan

好答案!谢谢!
Tms91
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.