i bet that by the time your lambda is running the point has been converted to a string already. can you see if that is true? i'm not sure how to invoke db functions in a lambda of a virtual field. :(
On Wednesday, January 1, 2014 5:50:54 PM UTC-8, User wrote: > > Suppose I have a table like: > > db.define_table('location', > Field(name, 'string'), > Field('point', 'geometry()') > ) > > I want to have the latitude and longitude as attributes also (whose value > can be derived from the point field). So I try this: > > db.define_table('location', > Field(name, 'string'), > Field('point', 'geometry()'), > Field.Virtual('latitude', lambda row: row.location.point.st_x()), > Field.Virtual('longitude', lambda row: row.location.point.st_y()), > ) > > But it doesn't work and fails silently. The model just doesn't have > latitude or longitude fields. I also tried with Field.Method but this > complains that 'point' is of typer str. > > I guess the complication is that st_x() translates into a database > function. I'm thinking about parsing the point string which is of the form > "POINT(x y)" as a workaround but I'd rather use st_x if someone can show me > how. > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.