Почему ImageGalleryBlock в wagtail-crx/coderedcms не возвращает изображений?
Wagtail-CRX устанавливается с предопределенным блоком StreamField ImageGalleryBlock, который позволяет пользователю выбрать коллекцию изображений, которые затем выводятся на страницу вместе с модальной всплывающей структурой.
В models.py моего приложения я создал переменную image_gallery следующим образом
image_gallery = StreamField([
('image_gallery', ImageGalleryBlock()),
],
verbose_name="Choose images for the gallery",
null=True,
blank=True,
default="",
use_json_field=True )
FieldPanel("image_gallery"),
Все работает нормально. FieldPanel добавляет блок выбора коллекции в форму редактирования страницы. Однако изображения в выбранной Коллекции никогда не появляются на странице при использовании любого из возможных методов вызова блока в шаблоне страницы, например
{% for block in page.image_gallery %}
<section>{% include_block block %}</section>
{% endfor %}
Здесь include вызывает блок, использующий шаблон image_gallery_block.html - структура модального окна отображается на странице, но нет изображений, которыми оно было бы заполнено.
Внутри шаблона image_gallery_block.html первой строкой является
{% get_pictures self.collection.id as pictures %}
где get_pictures - функция, которая должна передавать данные из объектов Collection в переменную pictures, и они должны быть итерированы в последующем шаблоне html таким образом
{% if pictures %}
{% for picture in pictures %}
{% image picture fill-800x450 format-jpeg preserve-svg as picture_image %}
{% image picture max-1600x1600 format-webp preserve-svg as original_image %}
<div class="col-sm-6 col-md-4 col-lg-3 my-3">
<a href="#" class="lightbox-preview" data-bs-toggle="modal" data-bs-target="#modal-{{modal_id}}">
<img class="img-thumbnail w-100" src="{{picture_image.url}}" data-original-src="{{original_image.url}}"
alt="{{picture_image.image.title}}" title="{{picture_image.image.title}}">
</a>
</div>
{% endfor %} etc.
Добавление {{ self.collection.id }}
в шаблон выводит правильный номер Collection, поэтому id передается, но {{ pictures}}
возвращает ImageQuerySet[]
get_pictures ссылается на файл coderedcms_tags.py и представляет собой следующее
@register.simple_tag
def get_pictures(collection_id):
collection = Collection.objects.get(id=collection_id)
return Image.objects.filter(collection=collection)
теги правильно загружаются в верхней части шаблона image_gallery_block.html с помощью {% load wagtailcore_tags wagtailimages_tags coderedcms_tags %}
.
У меня еще нет достаточного опыта работы с питоном, чтобы понять, как это сделать, но, похоже, функция get_pictures дает осечку.