Я обновляюсь с 1.6 до 1.9. Мой проект включает в себя код, полученный на основе этого образца AuditTrail: https://code.djangoproject.com/wiki/AuditTrailrelated_name изменено после 1.6
По существу, этот 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
По какой-то причине, после обновления, Джанго терпит неудачу с 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
, которые могут быть виновниками.
Это происходит только в том случае, если я запускаю django с ./manage.py shell_plus
, но, похоже, что-то загрузится правильно, если начато с ./manage.py shell
.
Установка 'related_name = '+' ', кажется, чтобы исправить это, но, очевидно, она теряет функциональность. – leonsas