Администраторский фильтр значения по умолчанию Django

Я знаю, что уже сумел сделать это, но не могу помнить, как, ни я не могу найти документацию об этом..

Как может применить фильтр по умолчанию на представление списка объектов в администраторе?

У меня есть приложение, которые перечисляют кавычки, и те кавычки имеют состояние (исключая: принятый, отклоненный, в ожидании..).

Я хочу набор фильтра на состоянии ='accepted' по умолчанию, который является..

21
задан h3. 18 June 2010 в 13:08
поделиться

2 ответа

Наконец, это то, что я искал:

def changelist_view(self, request, extra_context=None):
    if not request.GET.has_key('status__exact'):
        q = request.GET.copy()
        q['status__exact'] = '1'
        request.GET = q
        request.META['QUERY_STRING'] = request.GET.urlencode()
    return super(SoumissionAdmin,self).changelist_view(request, extra_context=extra_context)

Другой способ, с методом queryset в классе администратора не работает. Фактически, он фильтрует результаты, но при этом не работает функциональность фильтра.

Решение, которое я нашел, тоже не идеальное, при его использовании невозможно выбрать "Все / фильтр. В моем случае это не драматично, но будет достаточно хорошим ..

7
ответ дан 29 November 2019 в 20:12
поделиться

Вы можете переопределить набор запросов

class QuoteAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        return super(QuoteAdmin,self).get_queryset(request).filter(status="accepted")

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

В качестве альтернативы вы можете создать ссылку на следующий URL-адрес, добавив фильтр к параметрам GET.

/admin/myapp/quote/?status=accepted
6
ответ дан 29 November 2019 в 20:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: