如何将多个 filter() 查询附加到一个变量中

Posted

技术标签:

【中文标题】如何将多个 filter() 查询附加到一个变量中【英文标题】:How to append multiple filter() queries into one variable 【发布时间】:2015-03-01 17:03:53 【问题描述】:

如果我对模型有三个不同的查询,我如何将它们附加到一个变量中

x = AnswerModel.objects.filter(user= 'tim')

y = AnswerModel.objects.filter(user= 'paul')

z = AnswerModel.objects.filter(question= 'i like jam')

x = x.append(y)
x = x.append(z)

【问题讨论】:

您可以将它们附加到一个元组中。 x.append((y,z)) How can I find the union of two Django querysets? 的可能重复项 看起来你想chain them。 我不想在模型的过滤器查询中组合它们,我需要使用两个变量 x append y 我计划在 for 循环中完成它 【参考方案1】:

使用|:

x = AnswerModel.objects.filter(user= 'tim')
y = AnswerModel.objects.filter(user= 'paul')
z = AnswerModel.objects.filter(question= 'i like jam')

qs = x | y | z

或者,使用django.db.models.Q

x = AnswerModel.objects.filter(Q(user='tim') | Q(user='paul') | Q(question='i like jam')

这两种方法都将返回单个查询集中所有查询集的所有结果。

【讨论】:

【参考方案2】:

你需要chain

from itertools import chain
x = list(chain(x, y, z))

【讨论】:

以上是关于如何将多个 filter() 查询附加到一个变量中的主要内容,如果未能解决你的问题,请参考以下文章

将字符串附加到grafana查询中的变量?

将附加条件附加到查询

将mysql查询结果附加到变量

在 Python 中将多个变量附加到列表中

如何在 Connect 组件下的 graphql 查询中使用 $filter 变量?

[JavaWeb] Servlet Filter