如果我对未汇总的列使用filter
,请执行
我在SQL查询的where
子句中使用它
而不是按预期在having
。
我有一张测试结果表。 假设我有TestA和TestB。
Version: 2 | 2 | 2
TestA :Pass |Null |Fail
testB :Error |Fail |Null
每次测试都可以随时进行,
我想显示该测试的最新结果。
我尝试了什么
x=Site.results.filter(timeEnd__isnull=False).values('idTest').annotate(Max('timeEnd'))
然后使用:
过滤xx.filter(result=<number of result>)
但是我使用第二个过滤器得到了原始x中没有的结果。
如何获得所需的结果?
但如果我尝试显示:
result(Version=2).failedFilter()
TestA=Fail
TestB=Fail
result(Version=2).PassedFilter()
TestA=Pass
result(Version=2).ErrorFilter()
TestB=Error
result(version=2)
TestA=Fail
TestB=Fail
当实际上除了失败的过滤器之外,所有其余的都需要为空。
摘要
tables:
test
----
id
name
Site
----
id
name
testresult
----------
id
date
testid
siteid
result(int)
我想获得每个测试的网站的最终结果 然后按结果过滤。
答案 0 :(得分:1)
latest()将返回查询集中的最新模型。
site = Site.objects.get(id=1)
for test in Test.objects.all():
test_result = TestResult.objects.filter(site=site, test=test).latest('timeEnd')
print test_result.result
annotate()只计算一个值,它不进行任何过滤。我认为你当前的查询将返回任何有timeEnd设置的测试,而不是最后一个(这是我想你想要的)。