【发布时间】:2017-01-10 22:39:49
【问题描述】:
我正在从 1.6 升级到 1.9。 我的项目包含来自此示例 AuditTrail 的代码:https://code.djangoproject.com/wiki/AuditTrail
本质上,此 AuditTrail 允许即时创建审核模型以记录对审核表的任何更改。
部分代码需要确保避免related_name之间的冲突。这是按如下方式完成的,并且从 1.6 开始可以正常工作。
if isinstance(field, models.ForeignKey):
rel = copy.copy(field.rel)
rel.related_name = '_audit_' + field.related_query_name()
attrs[field.name].remote_field = rel
由于某种原因,升级后,django 在所有这些上都出现 SystemCheckError 失败,回溯看起来像:
SystemCheckError: System check identified some issues:
ERRORS:
email_reporting.ReportAudit.team: (fields.E304) Reverse accessor for 'ReportAudit.team' clashes with reverse accessor for 'Report.team'.
HINT: Add or change a related_name argument to the definition for 'ReportAudit.team' or 'Report.team'.
email_reporting.ReportAudit.team: (fields.E305) Reverse query name for 'ReportAudit.team' clashes with reverse query name for 'Report.team'.
HINT: Add or change a related_name argument to the definition for 'ReportAudit.team' or 'Report.team'.
任何想法如何解决它?我找不到对 related_name 的任何更改,这可能是罪魁祸首。
只有当我以 ./manage.py shell_plus 启动 django 时才会发生这种情况,但如果以 ./manage.py shell 启动,事情似乎可以正常启动。
【问题讨论】:
-
设置
related_name = '+'似乎可以修复它,但显然它会失去功能。
标签: django django-models django-1.9 django-1.6