【问题标题】:How to append multiple filter() queries into one variable如何将多个 filter() 查询附加到一个变量中
【发布时间】: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)

【问题讨论】:

标签: python django


【解决方案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))
    

    【讨论】:

      猜你喜欢
      • 2015-08-17
      • 2011-01-24
      • 2018-07-25
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      相关资源
      最近更新 更多