在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)
然而这并没有按预期工作,因为matched_q1
值已应用于所有行,即使那些仅匹配Q2但与Q1不匹配的行。
有没有什么方法可以更新查询,从结果中知道哪些行与第一个Q对象匹配?