首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >过滤使用Q对象与动态从用户?

过滤使用Q对象与动态从用户?
EN

Stack Overflow用户
提问于 2009-12-24 15:37:41
回答 1查看 2.6K关注 0票数 6

在我的views.py中,我有一个方法:

代码语言:javascript
复制
#......
def get_filter_result(self, customer_type, tag_selected):
        list_customer_filter=[]
        customers_filter = Customer.objects.filter(Q(type__name=customer_type),
                                                   Q(active=True),
                                                   Q(tag__id=tag_selected))

        for customer_filter in customers_filter:
                    customer_filter.list_authorize_sale_type = sale_type_selected(customer_filter.authorize_sale_type)
                    list_customer_filter.append(customer_filter)
        return list_customer_filter

**My case tag_selected是用户选中的复选框值I tag_selected有问题(是list=1,2,3,...)从我的url传过来的

代码语言:javascript
复制
/?customer_type=TDO&tag=2 ===>filter okay
/?customer_type=TDO&tag=3 ===>filter okay
?customer_type=TDO&tag=2,3 ===>How Can I add And condition in filter?

例如

代码语言:javascript
复制
if len(tag_selected)==1:
      customers_filter = Customer.objects.filter(Q(type__name=customer_type),
                                                       Q(active=True),
                                                       Q(tag__id=tag_selected))
else:
    customers_filter = Customer.objects.filter(Q(type__name=customer_type),
                                                       Q(active=True),
                                                       Q(tag__id=tag_selected[0])
                                                       Q(tag__id=tag_selected[1])
                                                       Q(tag__id=tag_selected[2])
                                                       ...
                                                        )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-24 15:47:00

这既适用于单一条件,也适用于多条件:

代码语言:javascript
复制
idseq = request.POST['tag'].split(',')
tag_qs = reduce(operator.or_, (Q(tag__id=x) for x in idseq))
Customers.objects.filter(..., tag_qs)
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1957240

复制
相关文章

相似问题

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