首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在ListView中按Post参数进行筛选

如何在ListView中按Post参数进行筛选
EN

Stack Overflow用户
提问于 2019-06-19 21:10:02
回答 1查看 40关注 0票数 0

我正在尝试在我的ListView中创建一个表单,它将发布到ListView并按POSTed属性进行过滤。

这是在Django 2.1项目中。

我尝试将self和request argunments都传递给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

尽管事实是只有self被传递。我只试着传递请求,结果是一样的。

许多在线示例显示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):‘’已处理所有订单‘’

代码语言:javascript
运行
复制
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(),然后处理逻辑以返回我试图实现的过滤查询集。

EN

回答 1

Stack Overflow用户

发布于 2019-06-19 21:27:55

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

代码语言:javascript
运行
复制
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')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56668468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档