У меня есть вопрос - можно ли настроить интерфейс администратора Django таким образом, чтобы он представлял только те параметры фильтра, которые присутствуют в подмножестве данных, соответствующих выбранным в данный момент фильтрам?
Скажите, у меня естьдБ из трех объектов:
a.Foo = "One"
a.Bar = "Drink"
b.Foo = "One"
b.Bar = "Shot"
c.Foo = "Two"
c.Bar = "Shot"
и интерфейс администратора django с фильтрами 'Foo' и 'Bar'.Мне нужно следующее поведение:
- Если фильтры не выбраны, «Foo» перечисляет «Один», «Два»;«Бар» отображает «Напиток», «Выстрел»
- Если для фильтра «Foo» установлено значение «Один», «Бар» отображает как «Напиток», так и «Выстрел»
- Если «Foo»для фильтра установлено значение «Два», «Бар» содержит только «Выстрел»
- Если для фильтра «Бар» установлено значение «Выстрел», в «Foo» перечислены «Один» и «Два»
- Если для фильтра «Бар» установлено значение «Напиток», в «Foo» отображается только «Один»
Приветствия!
Чтобы быть более конкретными - после прочтениянекоторые документы:
from django.contrib.admin import SimpleListFilter
class SomeFilter(SimpleListFilter):
title = "Foo"
parameter_name="Some"
def lookups(self, request, model_admin):
qs = model_admin.queryset(request)
print qs.query
return (('Foo', 'Bar'))
def queryset(self, request, queryset):
if (self.value()):
return queryset.filter(Some=self.value())
else:
return queryset
Однако он получает «набор запросов», как это было бы без других фильтров.Как я могу пропустить его через другие фильтры?
Теоретически я мог бы проанализировать запрос и отфильтровать вручную - но, безусловно, должен быть способ передать все фильтры.