Уведомления

Группа в Telegram: @pythonsu

#1 Май 21, 2023 22:14:26

Centner
Зарегистрирован: 2023-03-26
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Обьединение циклов в шаблоне.

Передаю в шаблоне ссылки на видео:

 {% for video in movie.episodes_set.all %}
<a href="" onclick="player.src({src:'{{ video.video.url }}'})"><img src="{% static 'img/abc.jpg' %}"></a>
{% endfor %}

Но не хочу вручную делать постеры к ним. Просто вытягиваю рандомный кадр и сохраняю рядом с видеофайлом с названием “видео”.jpg

Теперь надо передать постеры в шаблон (вместо “static ‘img/abc.jpg’” выше).

Беру queryset со ссылками на видео и заменяю там расширение на jpg
 class PosterList:
    def get_posters(self):
        queryset = Episodes.objects.all()
        res = []
        for poster in queryset:
            res.append(f"{str(poster.video).split('.')[0]}.jpg")
        return res

И тут получается затык - у меня общая строка в шаблоне но два цикла:

 <a href="" onclick="player.src({src:'{{ ссылка }}'})"><img src="{{ постер }}"></a>
{% for video in movie.episodes_set.all %}
ссылка
{% endfor %}
{% for poster in view.get_posters %}
постер
{% endfor %}

Есть решение для подобной конструкции?

Ок, но возможно у меня неправильно продуман вывод в контекст.
Я ведь могу в своем классе возвращать и queryset с ссылками на видео и ссылку на постер.

 class PosterList:
    def get_posters(self):
        queryset = Episodes.objects.all()
        res = []
        for poster in queryset:
            res.append(f"{str(poster.video).split('.')[0]}.jpg")
        return res, queryset

Получается они в одном цикле - то что мне и надо.
Только как мне тогда обратится к ним в шаблоне?

Отредактировано Centner (Май 21, 2023 22:27:44)

Офлайн

#2 Май 22, 2023 08:24:01

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Обьединение циклов в шаблоне.

что возвращает queryset
да и модель покажи



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Май 22, 2023 09:33:12

Centner
Зарегистрирован: 2023-03-26
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Обьединение циклов в шаблоне.

 class Episodes(models.Model):
    name = models.CharField("Название эризода", max_length=100)
    desc = models.TextField("Описание")
    url = models.SlugField(unique=True)
    video = models.FileField(upload_to="episodes/", blank=True)
    movie = models.ForeignKey(Movie, on_delete=models.CASCADE)

Список обектов-эпизодов.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version