Django admin: использование флажков в списке в list_filter()

У меня есть модель Transaction с ForeignKey для другой модели (TransactionState) в поле state. Итак, в admin.py у меня есть:

class TransactionAdmin(admin.ModelAdmin):
    ...
    list_filter = ('state')
    ...

В TransactionState у меня есть записи, такие как "платный", "неоплаченный", "поставленный", "отмененный" и т.д., и он отлично работает, но я хочу иметь возможность фильтровать с помощью флажков, чтобы разрешить множественный выбор, например "оплаченный" ИЛИ "доставлено". Это возможно?

Ответы

Ответ 1

Для всех моделей

Вы можете легко переопределить шаблоны администратора django, чтобы настроить пользовательский интерфейс администратора.

Чтобы отредактировать фильтр боковой панели, просто добавьте файл templates/admin/filter.html и напишите свой собственный HTML с помощью переключателей.

Обратите внимание, что это изменит фильтр боковой панели для всех моделей.

Для одной модели

Если вы хотите изменить фильтр для одной модели, вы можете указать шаблон для ListFilter:

class FilterWithCustomTemplate(admin.SimpleListFilter):
    template = "custom_template.html"

Пример

В качестве ссылочного примера проверьте шаблон по умолчанию для filter.html.

Ответ 2

  • Радиокнопки не могут иметь множественный выбор, вам нужно сделать их флажками.

  • То, что вы ищете, это настраивать фильтры. Я бы предложил вместо перезаписи списка фильтров содержать контрольную форму с флажками, добавить специальный фильтр с каждой опцией в качестве фильтра. Используйте эту ссылку и прокрутите вниз до SimpleListFilter, и вы сможете закодировать ее с 5-10 LOC.