在django中动态添加参数到queryset过滤器调用[重复]
Posted
技术标签:
【中文标题】在django中动态添加参数到queryset过滤器调用[重复]【英文标题】:Dynmically add arguments to queryset filter call in django [duplicate] 【发布时间】:2018-09-01 13:12:00 【问题描述】:我有一个字符串列表,它将动态生成。所以它将是可变长度的:
keywords = ['apples','oranges','bananas']
我有一个模型 Fruitsalad,带有“描述”字段。假设我想在“描述”字段中查找所有带有“苹果”、“橙子”或“香蕉”的水果沙拉
results = Fruitsalad.objects.filter(Q(description__icontains=keywords[0]) | Q(description__icontains=keywords[1] | Q(description__icontains=keywords[2])
如果我事先不知道“关键字”列表的长度,我该如何生成上述查询?
【问题讨论】:
【参考方案1】:你应该遍历你的数组,并对每个结果做一个联合
allresults = Fruitsalad.objects.all()
keywords = ['apples','oranges','bananas']
queryset = None
for keyword in keywords:
if queryset == None:
queryset = allresults.filter(description__icontains=keyword)
else:
queryset = queryset.union(allresults.filter(description__icontains=keyword))
#here are the desired results
print(queryset)
【讨论】:
以上是关于在django中动态添加参数到queryset过滤器调用[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在django中将QuerySet过滤到每个组的最大成员?