TL;博士:阅读最后一段的web2py:DAL找到()不工作
我有这应该在一个列表返回三个row
对象的功能。和行对象如下:
- 从表行
mining
- 属于当前
savestate
process
是1,2或3,分别为在列表中的三个成员 的
- 那些最大的一个
finish_date
采矿与savestates没有直接关系,所以我必须跟踪相关ct透过名为turn
的表进行投资。关系如下:savestate 1:n转1:1挖矿。
这是我到目前为止有:
def get_latest_minings(save_id):
return_list = []
#get all turn.ids that belong to this savestate:
savestate_turns = [s.id for s in db(db.turn.savestate_id == save_id).select(db.turn.id)]
#get all minings that belong to these turns:
save_minings = db(db.mining.turn_id.belongs(savestate_turns)).select()
#loop to get three objects:
for i in range(1,4):
#from save_minings, get all minings, whose process is i:
line_minings = save_minings.find(lambda row: row.process == i)
#initialize loop variables:
latest_date = 0
latest = None
#loop to find the biggest finish_date:
for m in line_minings:
if m.finish_date > latest_date:
latest_date = m.finish_date
latest = m
#add the row with the biggest finish_date to the list:
return_list.append(latest)
#return locals() for testing purposes:
return locals()
#actual return:
#return return_list
以此为目的但不起作用。这是它返回:
https://www.dropbox.com/s/ns6mq9414vw25s9/get_latest_minings.png?dl=0
我遇到了一些独立的测试和我发现是与线问题:line_minings = save_minings.find(lambda row: row.process == i)
。其他所有生产线都应该如此。这里有什么问题?另一个问题:可以优化更多吗?我特别好奇寻找正确的投资者。