首页 > 解决方案 > Django - 如何对未知数量的值进行 OR 查询

问题描述

我正在开发用户在 GET 请求中传递城市列表的小型应用程序。我需要获取给定城市存在的所有数据。我目前的解决方案有效,但我正在寻找更有效的方法。目前我正在创建单独的数组并在循环中添加以下查询集。有没有办法在一个查询中做到这一点?我也考虑过原始查询,但我不确定是否推荐。

def get(self, request):
        search_phrase = request.GET["search"]
        cities = request.GET["city"].split(",")
        found_results = []
        for city in cities:
            found_results += Job.objects.filter(position__icontains=search_phrase, city=city)
        return render(request, "search.html", {"results":found_results})

标签: djangodjango-queryset

解决方案


您可以在这里使用 [__in查找 [Django-doc]]( https://docs.djangoproject.com/en/dev/ref/models/querysets/#in

def get(self, request):
    search_phrase = request.GET['search']
    found_results = Job.objects.filter(
        position__icontains=search_phrase,
        city__in=request.GET['city'].split(',')
    )
    return render(request, 'search.html', {'results':found_results})

推荐阅读