可能重复:
使用来自用户的动态 Q 对象进行过滤?
我正在开发我的应用程序中的过滤器功能。我通过 jquery 向 Django 发送一个逗号分隔的字符串(在 jquery 中,我将空格替换为 +,以便可以通过网络发送)。
/?ajax&sales_item=t2,+t1
现在在检索 GET 参数时的视图中,我可以看到 Django 已经将 + 替换为空格,这很棒。然后我用逗号分割关键字并去掉空格。
sales_item_raw = request.GET['sales_item']
sales_item_keywords = sales_item_raw.split(',')
我需要首先检查给定的名称是否作为销售项目存在。我必须使用 a icontains
,因此sales_items
可以是多个项目。
for item in sales_item_keywords:
sales_items = profile.company.salesitem_set.filter(item_description__icontains=item.strip())
最后但并非最不重要的一点是,查询集用于过滤给定 sales_items 的交易:
deals_queryset = deals_queryset.filter(sales_item__in=sales_items)
如果用户只过滤一个可以正常工作的关键字,但是如果有两个关键字,sales_items
则在每次循环迭代中显然会被覆盖。
解决此问题的最有效方法是什么?我应该将sales_items
每次迭代中的内容附加到循环外的列表中吗?并最终将新名单送入决赛deals_queryset.filter
?
我不确定这是否是解决此问题的好方法...