Как отфильтровать по пост-аргументам в ListView - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь создать форму в моем ListView, которая отправляет POST в ListView и фильтрует по атрибутам POSTed.

Это в проекте Django 2.1.

Я попытался передать аргументы self и request функции post, но я получаю исключение ниже например,

def post(self, request):

приводит к исключению TypeError:

post() takes 1 positional argument but 2 were given

Если я пытаюсь устранить ошибку, удалив один из параметров, чтобы функция post () def post(self) передавала только себя, я получаю следующее исключение TypeError:

post() takes 1 positional argument but 2 were given

Несмотря на то, что прошло только «я». Я попытался только передать запрос, и это приводит к тому же.

Много примеров онлайн шоу def post(self, request, *args, **kwargs)

Это приводит к очевидным исключениям: too many values to unpack (expected 2)

Удаление всех аргументов приводит к ошибке TypeError: post() takes 0 positional arguments but 2 were given

class thing_dashboard (ListView): '' 'Все заказы обработаны' ''

template_name = 'thing/orders_dashboard.html'
paginate_by = 25 

def post(self, request):
    queryset = Order.objects.all().order_by('-ordered_date')
    rejected = self.request.POST.get('rejected')
    if rejected == 'False':
        queryset = Order.objects.filter(state='rejected')
        return queryset
    return queryset

def get_queryset(self):
    queryset = Order.objects.all().order_by('-ordered_date')
    return queryset

Я ожидаю, что в простом представлении на основе функций мне может понравиться ссылка на self.request.POST.get (), а затем обработать логику для возврата отфильтрованного набора запросов, которого я пытаюсь достичь.

1 Ответ

0 голосов
/ 19 июня 2019

Сначала удалите метод записи, затем попробуйте:

template_name = 'thing/orders_dashboard.html'
paginate_by = 25 

def get_queryset(self):
    rejected = self.request.POST.get('rejected') or None
    if rejected:
        return Order.objects.filter(state='rejected').order_by('-ordered_date')
    return Order.objects.all().order_by('-ordered_date')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...