#django #django-templates
#django #django-шаблоны
Вопрос:
В шаблоне я пытаюсь сделать что-то вроде этого:
{{ request.user.profile.following.all.values_list }}
и я получаю
<Набор запросов [(7, 2, 1)]>
, но я хочу получить
<Набор запросов [2]>
как в Django values_list. Например: Follow.objects.filter(follow_by=self.request.user.profile).values_list('follow_to', flat=True)
могу ли я передать такой аргумент в шаблоне?
Комментарии:
1. Django намеренно ограничивает свой язык шаблонов, чтобы не выполнять подписки или вызовы функций для методов с параметрами. Это бизнес-логика и относится к представлению.
Ответ №1:
Могу ли я передать такой аргумент в шаблоне?
Нет. Механизм шаблонов Django намеренно ограничивает это, поскольку это логика, которая принадлежит представлению. Например:
from django.contrib.auth.decorators import login_required
@login_required
def my_view(request):
following = request.user.profile.following.values_list('follow_to', flat=True)
return render(
request,
'some_template.html',
{'following': following}
)
Затем вы можете отобразить это с помощью:
{{ following }}
При этом использование .values_list(…)
[Django-doc] часто является антишаблоном, поскольку оно разрушает слой модели. Таким образом, это что-то связанное с примитивным антипаттером obsession [refactoring.guru].