Я использую Wagtail CMS для создания каталога продуктов. Я создал базовый тип страницы для продукта:
class Product(Page):
Он имеет основные поля, такие как заголовок, описание, изображение и т. д. Но мне нужно «что-то особенное»:
Специальная часть доступна во многих вариантах, и каждый продукт может иметь некоторые из них. Поэтому я создал еще одну модель, очень простую:
@register_snippet
class Variant(models.Model):
для хранения всех вариантов. Вариант имеет имя и изображение. Есть около 200 продуктов и 30 вариантов.
Моя проблема в том, что я не знаю, как справиться в трясогузке с двумя задачами:
связать продукт с вариантами (внешний ключ) с отношением «многие ко многим», чтобы выбрать варианты, связанные с продуктом, на той же странице, что и другие объекты страницы
у каждого отношения есть дополнительные параметры (2 параметра), которые зависят от отношения (материал и диаметр), и снова я не нашел, как отображать и управлять такими отношениями в редакторе страниц.
Я знаю, что Django может обрабатывать это с помощью встроенных наборов форм (администратор django поддерживает его из коробки), но есть ли способ Wagtail, чтобы это было сделано и редактировалось редактором Wagtail? Я предпочитаю управлять всем продуктом в одном месте, а не разделять отношения в django-admin.
Спасибо за любую помощь или совет.
InlinePanel
— это эквивалент трясогузки встроенных форм администратора Django. Пример этого приведен в учебнике по трясогузке: https://docs.wagtail.io/en/stable/getting_started/tutorial.html#images.
В данном случае это установка отношения «многие ко многим» между страницами и изображениями с дополнительным параметром (заголовком) отношения; ваше отношение Product -> Variant может быть настроено таким же образом.
Спасибо, это именно то, что я искал, просто не обращал внимания на основные примеры. Отлично работает с FieldRowPanel, экономит место и отлично выглядит.