django - 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})
解决方案
您可以在这里使用 [__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})
推荐阅读
- javascript - 当一个日期在前一年时比较两个日期
- javascript - 离子角度应用程序将毫秒转换为本地存储中的日期时间
- julia - 在 Windows 2012 R2 下使用 Julia v1.5.1 进行 Plots.jl 预编译失败
- java - 无法构建maven项目
- windows - 如何区分触摸板产生的WM_MOUSE***消息和鼠标设备产生的消息?
- mysql - 使用 REGEXP_REPLACE 将字段从一个表复制到另一个表
- java - Java中的Else-if语句不起作用,我做错了什么?
- vue.js - 如何从组件“A”更新 vuex 状态,它应该反映在组件“B”上
- angular - 错误 npm install --save @angular/fire@5.1.1 firebase@5.8.4 gyp ERR!构建错误
- r - R - 查找年龄列表的平均值