In SQL I can do
select doctype, sum(count) number
from wos.za_publications
where pubyear > 1979
group by doctype;
In the web2py shell I can do:
db.define_table('wos_papers_by_dt',
Field('pubyear', 'integer'),
Field('doctype'),
Field('count', 'integer'),
migrate = False,
rname = 'wos.za_publications')
papers = db.wos_papers_by_dt.count.sum()
query = db.wos_papers_by_dt.pubyear > 1979
l = db(query).select(db.wos_papers_by_dt.doctype,papers, groupby = db.wos_papers_by_dt.doctype)
for i in l:
print i['_extra']['SUM(wos.za_publications.count)'], i['wos_papers_by_dt']['doctype']
which produces a similar result.
Why is it not working when, using the same model and logic I get an error when I try to put the result in a grid?
za_arts = SQLFORM.grid(query,
fields=[db.wos_papers_by_dt.doctype, papers],
groupby = db.wos_papers_by_dt.doctype,
headers = headers,
create = False,
editable = False,
details = False,
deletable = False,
searchable = False
)
raceback (most recent call last):
File "/home/js/web2py/gluon/restricted.py", line 227, in restricted
exec ccode in environment
File "/home/js/web2py/applications/wos_2015_3/controllers/wos_indicators.py", line 169, in <module>
File "/home/js/web2py/gluon/globals.py", line 412, in <lambda>
self._caller = lambda f: f()
File "/home/js/web2py/applications/wos_2015_3/controllers/wos_indicators.py", line 49, in za_arts_by_doctype
searchable = False
File "/home/js/web2py/gluon/sqlhtml.py", line 2183, in grid
columns = [f for f in fields if f.tablename in tablenames]
AttributeError: 'Expression' object has no attribute 'tablename'
Regards
Johann
--
Because experiencing your loyal love is better than life itself,
my lips will praise you. (Psalm 63:3)