FYI, I did create an issue for this (#979) in google code.
Best,
Mike L
On Monday, November 26, 2012 3:51:52 PM UTC-5, Adi wrote:
>
> +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.
>>>
>>
--