知道哪个django子查询匹配一行

知道哪个django子查询匹配一行,django,Django,在django 1.6应用程序中,我有一行代码如下所示: data = query_set.filter(Q1 | Q2).values('pk', *fields) 现在我发现后面的代码处理数据需要知道哪些行与Q1匹配,哪些不匹配。我尝试了以下方法: data = (query_set.filter(Q1).extra(select={'matched_q1': 1}) | query_set.filter(Q2)).values('pk', *fields) 然而,这并没

在django 1.6应用程序中,我有一行代码如下所示:

data = query_set.filter(Q1 | Q2).values('pk', *fields)
现在我发现后面的代码处理数据需要知道哪些行与Q1匹配,哪些不匹配。我尝试了以下方法:

data = (query_set.filter(Q1).extra(select={'matched_q1': 1}) |
        query_set.filter(Q2)).values('pk', *fields)
然而,这并没有像预期的那样起作用,因为匹配的_q1值应用于所有行,即使是那些只匹配Q2但不匹配q1的行


是否有某种方法可以更新查询,从结果中知道哪些行与第一个Q对象匹配?

关于我们讨论的行数?10,1,1米?性能重要吗?@danihp代码用于许多不同的表。最大的一排有300万行,而且还在增长。匹配行的数量在0到10K之间变化。表现很重要。我还不知道我对这个查询的确切性能要求,因为这取决于我能将其余函数的速度提高多少。目前,它比可接受的速度慢10倍。我可能负担得起这种方法:按原样使用原始查询。接下来,如果生成任何结果,请评估查询集.filterQ1.values'pk'。在我的例子中,我期望50%的时间匹配行数为0。@user21904最后我使用了两个单独的查询。