web2py中的groupby和orderby
我有三个表格:
db.define_table('projects',Field('name')) db.define_table('tests', Field('name'), Field('project',db.projects, notnull=True)) db.define_table('results', Field('test',db.tests, notnull=True), Field('status'), Field('started', 'datetime', writable=False))
我想要一个项目列表,里面显示每个项目通过和失败的测试数量。一个测试通过或失败,是根据最新的结果来判断的,如果最新的结果状态是“通过”,那么就算通过。如果一个测试没有结果,那么状态就应该是“无”。
1 个回答
0
你可以试试一些过程性的做法
for project_row in db(db.projects).select():
numPassed = 0
numFailed = 0
numNull =0
num = 0
for test_row in db(db.tests.project==project_row).select():
results=db(db.results.test==test_row).select(orderby=~db.results.started,
limitby=0)
if len(results) == 0:
numNull += 1
elif results[0].status=="pass":
numPassed +=1
else:
numFailed +=1
print project_row.name, numPassed, numFailed, numNull