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.