Внести изменения в строку в шаблоне Django? - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть набор запросов в Django, который содержит строковое поле.Это имя файла, например, images/photo.jpg или images/photo.20.19.22.jpg.Мне нужно переписать их в одном конкретном представлении, чтобы ".thumbnail" был вставлен перед расширением.Предыдущие имена должны стать images/photo.thumbnail.jpg и images/photo.20.19.22.thumbnail.jpg.

Каков наилучший способ сделать это?Это часть набора запросов, поэтому он будет выглядеть так:

{% for record in list %}
  {{ record.image }}
{% endfor %}

Теперь, конечно, я бы хотел сделать это за пределами моего шаблона.Однако я не вижу способа, которым я могу это сделать.В конце концов, это необходимо сделать для каждой записи в моем наборе запросов.Чтобы усложнить вещи, эта запись не приходит напрямую от модального.Эта запись взята из подзапроса, поэтому я не вижу способа изменить сам модал.Должен ли я использовать шаблоны тегов для этого?Любые другие рекомендации?

К вашему сведению подзапрос выглядит примерно так:

>>> from django.db.models import OuterRef, Subquery
>>> newest = Comment.objects.filter(post=OuterRef('pk')).order_by('-created_at')
>>> Post.objects.annotate(image=Subquery(newest.values('image')[:1]))

1 Ответ

0 голосов
/ 09 февраля 2019

Простой пользовательский шаблонный фильтр может сделать это.

@register.filter
def add_thumbnail(image):
    return image.replace('.jpg', 'thumbnail.jpg')

И в шаблоне:

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