+1 this would be a great and needed feature... just stumbled into this problem, and working around it :)
On Friday, August 31, 2012 5:48:17 PM UTC-4, Massimo Di Pierro wrote: > > Hello Mike, > > thanks for your patch? Would you please attach it to a google code issue > so we do not forget. We cannot add new feaures until all 2.0.x issues have > been resolved. > > On Friday, August 31, 2012 2:41:30 PM UTC-5, Mike Leone wrote: >> >> Hello, >> >> We're building a web2py application that leverages SQLFORM.smartgrid >> heavily. Out of the box, this does not support filtering on 1:M >> relationships, or reference fields on the model. We understand the concerns >> about this: It could potentially be a huge performance hit, especially if >> the related table has a large number of rows. >> >> On the other hand, this functionality is very valuable. Being able to >> filter on related tables is a very common need in applications. Often, >> users need to filter on "lookup" tables that have a relatively small number >> of rows, and the performance hit is negligible. This is a very common >> feature in Django, and in Rails admin interfaces like ActiveScaffold and >> RailsAdmin. >> >> Example: >> >> Given a model like this: >> >> db.define_table('book', >> Field('user_id', 'reference auth_user'), >> Field('title'), >> Field('genre')) >> >> And a controller like this: >> >> def index(): >> grid = SQLFORM.smartgrid(db.book) >> return dict(grid=grid) >> >> The query interface will look like this by default: >> http://i49.tinypic.com/2ugjt02.jpg >> >> Note how this includes title and genre, but not the auth_user reference. >> >> We patched web2py to allow to for 1:M reference fields in the query >> interface. The resulting interface and generated query look something like >> this: >> >> http://i46.tinypic.com/28taq74.png >> >> Here is our simple patch to allow searching on reference fields like this: >> >> https://gist.github.com/ff543a5c6d3bc14b9079 >> >> This is obviously NOT ready for production; it's a simple proof of >> concept. Note the potentially very expensive "ALL" query. Because of the >> performance risks, something like this only makes sense if developers can >> opt in, i.e. explicitly say so if they want to include a given reference >> field in the query interface. >> >> 1. Would the web2py maintiners be interested in a feature like this if it >> is opt-in? I'm willing to devote some time to submit a more robust patch >> if I could get some guidance. >> >> 2. I also have a simple implementation for querying on list:reference >> fields that I can share as well. >> >> Finally, I just want to thank the web2py team. I've really enjoyed using >> the framework and hope to help out as much as I can. >> >> Thanks, >> Mike Leone >> Principal, Engineering >> Panoptic Development, Inc. >> > --