Django: зворотні аксесуари для зіткнення сторонніх ключів


113

У мене є дві моделі Джанго, які успадковують базовий клас:

- 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
Чи можете ви опублікувати визначення своєї моделі, включаючи Inquiryта Analysisта їх стосунки доRequest
dm03514

оновлена посилання для відповідного імені в Django 1.9
Себ

Відповіді:


138

Це related_nameзабезпечило б, щоб поля не суперечили один одному, але у вас є дві моделі, в кожній з яких є обидва ці поля. Вам потрібно вписати назву конкретної моделі в кожну, що можна зробити за допомогою спеціальної підстановки рядків :

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

1
Посилання у вашій відповіді мертве.
Метт Д

2
@MatthewDrill Я надіслав редагування, щоб виправити її, тим часом спробуйте docs.djangoproject.com/en/1.10/topics/db/models/…
Іван

Чудова відповідь! Дякую!
Tms91
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.