У меня есть модель документа, которая имеет много разных «избранных» отношений с пользователем. Когда я показываю список документов на странице поиска, я хотел бы показать, является ли каждый документ фаворитом или нет для текущего пользователя. Я знаю два способа сделать это, еще один эффективный и один уборщик. Мне интересно, есть ли другой способ сделать это, чтобы он был эффективным и чистым.Запрос на отношения M2M в шаблонах Django
Чистая версия. Просто имейте метод на модели «is_favored (пользователь)», который указывает, пользуется ли данный документ данным пользователем. Затем используйте простой тег шаблона, который использует эту функцию для отображения пустой звезды или заполненной звезды. Конечно, это неэффективно, поскольку для каждого документа будет выполняться другой вызов БД. Но это хорошо, потому что представление не нужно менять каким-либо образом.
Эффективная версия. Сделайте один запрос базы данных в представлении для извлечения любимых запросов и добавьте поле «благоприятствования» для каждого документа. Мне не нравится этот подход, потому что мне придется добавить пользовательский код ко всем представлениям, отображающим документы, и это не слишком СУХОЙ.
Есть ли более эффективный подход, который является одновременно сухим и эффективным? Спасибо.
Я не думаю, что я могу иметь доступ к документам я проходящие в шаблон в обработчиках контекста. Мне нужно это, чтобы добавить «любимую» переменную в каждом документе. –