Зацикливать пользовательский тег с параметром, который возвращает запрос - PullRequest
0 голосов
/ 07 июня 2018

Мой пользовательский тег:

register = template.Library()
@register.simple_tag
def last_three_messages(request):
    u=User.objects.get(username=request.user)
    last_three_messages=Message.objects.filter(to_user=u, opened=False)[:3]
    return last_three_messages

Как мне зациклить это в шаблоне?Я попытался:

{% for message in last_three_messages request %}
    do something
{% endfor %}

Это вернуло ошибку:

для операторов 'следует использовать формат' для x в y ': для сообщения в запросе last_three_messages

Как пройти через набор запросов и передать запрос в качестве параметра?

1 Ответ

0 голосов
/ 07 июня 2018

Вы не назвали тег;просто ссылка на имя внутри тега for не вызовет его.

Сначала вам нужно будет вызвать его и присвоить его результат переменной:

{% last_three_messages request as my_messages %}
{% for message in my_messages %}

, но гораздо лучший подходбыло бы написать это как фильтр:

@register.filter
def last_three_messages(request):
    ...

и назвать его как

{% for message in request|last_three_messages %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...