web2py中的groupby和orderby

1 投票
1 回答
726 浏览
提问于 2025-04-17 12:25

我有三个表格:

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

撰写回答