У нас есть приложение Django / DRF с классом продукта, который добавляется в трясогузку как фрагмент, поэтому редакторам не нужно использовать два интерфейса администрирования:
from django.db import models
from modelcluster.models import ClusterableModel
from wagtail.admin.edit_handlers import FieldPanel, ...
@register_snippet
class Product(ClusterableModel):
...
related_products = models.ManyToManyField(
'self',
related_name='related_product',
blank=True,
symmetrical=False
)
class Meta:
ordering = ['-id']
Для того, чтобы выбрать связанные продукты в В интерфейсе администратора поле related_products
представлено с использованием FieldPanel
:
@register_snippet
class Product(ClusterableModel):
...
panels = [
...
FieldPanel('related_products'),
...
]
...
Однако, похоже, не существует способа указать пользовательский порядок для элементов исключительно для целей администратора, например, путем добавив ordering
к FieldPanel
. В документах упоминается, что фрагменты не могут быть упорядочены таким же образом, как Page
, но я не собираюсь разрешать упорядочение, управляемое редактором, в этом случае, просто предопределенное пользовательское упорядочение внутри поля множественного выбора, которое заканчивается FieldPanel создание на странице администратора.
Я также не могу найти какой-либо хук, который мог бы быть здесь полезен, так что: возможно ли вообще использовать пользовательский заказ только для панелей?
Как код шаблона ({% for product in products %}
), так и список фрагментов в администраторе должны использовать Meta
указанный порядок, но FieldPanel для related_products
при просмотре / редактировании отдельного фрагмента продукта должен использовать другой порядок.