Hey guys!
Did 2.10.3-stable+timestamp.2015.04.02.21.42.07 change something in the way
format statements %(fields)s are handled?
When referencing another table, the
format statement now seems to be ignored. Instead only the foreign key id is displayed.
Example
I have the following lookup table
db.define_table('countries',
Field('country', 'string'),
Field('the_geom', 'geometry()'),
Field.Virtual('latitude', lambda row: db(
db.countries.id ==
row.countries.id).select(db.countries.centroid.st_y()).first()[db.countries.centroid.st_y()]),
Field.Virtual('longitude', lambda row: db(
db.countries.id ==
row.countries.id).select(db.countries.centroid.st_x()).first()[db.countries.centroid.st_x()]),
format='%(country)s', migrate=True)
Another table is referencing this lookup table
db.define_table('uploads',
Field('country',
db.countries),
Field('uploaded','date'),
...
migrate=True)
Now I would like to count the number of uploads per country.
def count_uploads_by_country():
import datetime
from datetime import timedelta
count = db.wifi_zone.id.count()
result = db(db.uploads.uploaded > datetime.date.today() - timedelta(days=7)).select(
db.uploads.country, count, groupby = db.uploads.country).render()
return dict(result=result)
I would expect that a query on the uploads table would display the country name as specified in the format statement, i.e.
Country Uploads per CountryFrance 123
Italy 45
Germany 10
Until recently this worked perfectly, but following the update to 2.10.3 only the country ids are returned, i.e.
Country Uploads per Country
1 <-- foreign id instead of name
2 <-- 45
3 <-- 10
db._lastsql shows that the country name isn't even queried:
SELECT uploads.country, COUNT(
uploads.id) FROM uploads WHERE (uploads.last_updated > '2015-04-04') GROUP BY uploads.country;
Does anybody have a clue, why only the foreign id is displayed, but not the country name according to the format statement?
Cheers
Toby