如何在ListView中按发布参数过滤

时间:2019-06-19 13:10:01

标签: django

我正在尝试在ListView中创建一个表单,该表单会过帐到ListView并按POSTed属性进行过滤。

这是在Django 2.1项目中。

我尝试将self和request步枪传递给post函数,但是我收到以下异常 例如

def post(self, request):

导致TypeError异常:

post() takes 1 positional argument but 2 were given

如果我尝试通过删除参数之一来解决错误,以便仅将self传递给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

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 :(得分:0)

首先,删除post方法,然后尝试:

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')
相关问题