Перенаправление не правильно в админке django - PullRequest
0 голосов
/ 12 июня 2018

У меня есть метод, задача которого заключается в перенаправлении страницы в панели администратора с:

http://127.0.0.1:8000/admin/events/event/

на:

http://127.0.0.1:8000/admin/events/event/?date__lt=2018-6-11

Вместо страницы я получил информацию:

The page isn’t redirecting properly

Вот мой код: admin.py

Первая версия кода:

def changelist_view(self, request, extra_context=None):
    if not request.method != 'GET':
        url = '{}?date__lt={}'.format(reverse('admin:events_event_changelist'), date.today())
        return HttpResponseRedirect(url)

код после редактирования

def changelist_view(self, request, extra_context=None):
    q = request.GET.get('date')
    if not q:
        url = '{}?date__lt={}'.format(reverse('admin:events_event_changelist'), date.today())
        return HttpResponseRedirect(url)

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

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Если вы всегда хотите ограничить отображаемые события, может быть проще переопределить метод get_queryset вместо перенаправления.

class EventAdmin(admin.modelAdmin):
    def get_queryset(self, request):
        qs = super(EventAdmin, self).get_queryset(request)
        if request.user.is_superuser:
            # Allow superusers to see all events
            return qs
        else:
            return qs.filter(date__lt=date.today())

admin.site.register(Event, EventAdmin)
0 голосов
/ 12 июня 2018

Сообщение об ошибке вашего браузера показывает, что ваш сайт застрял в бесконечном цикле перенаправления.Глядя на ваше состояние, становится понятно, почему:

if not request.method != 'GET':

эквивалентно

if request.method == 'GET':

Перенаправление всегда приводит к запросу GET, поэтому ваше представление будет перенаправляться снова и снова...

Полагаю, что вы на самом деле хотите достичь, это перенаправить, только если нет параметра URL.Они хранятся в request.GET, поэтому ваше состояние будет выглядеть так:

if not request.GET:
...