Трясогузка: как заказывать сниппеты

Aug 19 2020

Я создаю сниппеты трясогузки для таких вещей, как страна и штат, а также для других функций, таких как варианты транспортировки. Я удивлен, что нет возможности отображать сниппет заказа в панелях «сборщика».

«В фрагментах отсутствуют многие функции страниц, например, их можно заказать в админке Wagtail» https://docs.wagtail.io/en/stable/topics/snippets.html?highlight=order

Это означает, что если я вставлю (скажем) новую страну, невозможно отобразить ее в алфавитном списке, и пользователям будет очень трудно найти ее на панели.

Есть ли способ, по крайней мере, отображать элементы сниппета с альфа-сортировкой на панели?

Я действительно предпочел бы иметь возможность делать заказы в пользовательском интерфейсе администратора, чтобы у меня были варианты, такие как «В метро», «Короткая прогулка до метро», «Долгая поездка до метро», сгруппированные вместе, а не с сортировкой по альфа-каналу. Если я не могу сделать это с помощью сниппетов, есть ли способ сделать что-то подобное с помощью Orderable и разрешить его сохранение в пользовательском интерфейсе администратора, например сниппеты?

Благодарю.

Ответы

1 gasman Aug 18 2020 at 23:06

Django позволяет вам установить orderingсвойство в классе модели, Metaчтобы определить порядок по умолчанию, используемый запросами по этой модели - это будет использоваться в списках администратора Wagtail.

@register_snippet
class Country(models.Model):
    name = models.CharField(max_length=255)

    class Meta:
        ordering = ['name']

Для определяемых пользователем порядков вы можете определить числовое поле (например, с именем position) и установить orderingсвойство для этого поля.