我从数据库查询了数据。有一个使用sum()函数的字段,我无法在视图上显示它。
我已经更改了与字典对应的密钥,但是它仍然无法正常工作。 当我只打印字典时,它会告诉我这一点。
<Row {'indata': {'nation': '\xe0\xb8\x88\xe0\xb8\xb5\xe0\xb8\x99'}, '_extra': {'SUM(`indata`.`quan`)': 14635.0}}>
所以如果我可以访问item.indata.nation进入\ xe0 \ xb8 \ x88 \ xe0 \ xb8 \ xb5 \ xe0 \ xb8 \ x99 我应该能够从中访问14635.0
item._extra.SUM(indata
。quan
),但无效
这里是控制器:
def byNation():
indata = db((db.indata.date>=request.args[0])&
(db.indata.date<=request.args[1])&(db.indata.quan!=0)
).select(db.indata.nation,db.indata.quan.sum(),
groupby=db.indata.nation,orderby=~db.indata.quan.sum())
outdata = db((db.outdata.date>=request.args[0])&
(db.outdata.date<=request.args[1])&(db.outdata.quan!=0)
).select(db.outdata.nation,db.outdata.quan.sum(),
groupby=db.outdata.nation,orderby=~db.outdata.quan.sum())
return locals()
这里是视图:
{{for item in indata:}}
{{=item.indata.nation}}#This line doing fine
{{=item._extra.SUM(`indata`.`quan`)}}#This line not how could I access it ??
{{pass}}
它在以下位置导致语法无效
response.write(item._extra.SUM(`indata`.quan`))
这不应该发生。
答案 0 :(得分:0)
无需显式访问._extra
键-只需执行以下操作即可:
item['SUM(`indata`.`quan`)']
但是,上述关键字可能特定于所使用的特定数据库(它只是数据库用来计算总和的确切查询表达式)。因此,最好使用文档中建议的方法:
def byNation():
indata_sum = db.indata.quan.sum()
indata = db((db.indata.date>=request.args[0])&
(db.indata.date<=request.args[1])&(db.indata.quan!=0)
).select(db.indata.nation,indata_sum,
groupby=db.indata.nation,orderby=~indata_sum)
...
return locals()
然后在视图中:
{{=item[indata_sum]}}
请参阅http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#sum-avg-min-max-and-len(和here有关实现细节的更多信息)。