【问题标题】:Is there a way I can filter by any one of x in a django query有没有一种方法可以在 django 查询中按 x 中的任何一个进行过滤
【发布时间】:2020-06-28 14:18:06
【问题描述】:

在我的 webwapp 中,我希望用户能够通过从 sidebar 中选择类别来过滤搜索结果。

视图中的数据 GET 请求检索所选选项列表并被解析出来。然后将要过滤的这些数据分成列表,如下面的sn-p from Index in views.py:

class Index(View):
    def get(request):
        ... some checks to ensure its a valid request...
        if valid:
            dietTypeList = request.GET.getlist('diettype[]') #['meat','vegetarian',...] 
            categoryList = request.GET.getlist('categories[]') #['Italian','Western',...]
            ....
            return render(request,'results.html',context_dict)
        ....

然后我想在 .filter() 过滤器函数中过滤结果,以便我的结果是任何选定的类别,任何饮食类型应用于这些类别。

我已经查看了 Q 查询,但是我不确定无论如何如何执行以下操作 我如何有效地做到以下几点:

results = Recipe.objects.filter(Q(name__contains=searchCriteria) & Q(category=any of categoryTypeList ))

【问题讨论】:

  • 如果我建议category__in=[category, list],我会错过什么吗?

标签: python django list django-queryset


【解决方案1】:

创建过滤器以查看某个类别是否是一组类别的成员的一种简单方法是使用double-underscore name__in 表单进行字段查找,如下所示

results = Recipe.objects.filter(category__in=some_set_of_categories)

【讨论】:

    猜你喜欢
    • 2018-07-27
    • 1970-01-01
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    • 2021-08-19
    • 1970-01-01
    • 2015-11-02
    相关资源
    最近更新 更多