With joins, you have to specify the ID field explicitly:
SQLFORM.grid(..., field_id=db.applics1.id)
Anthony
On Monday, November 19, 2018 at 4:48:14 AM UTC-5, Francis Windram wrote:
>
> Hi All,
>
> I'm hitting an issue with the selectable field in SQLFORM.grid.
>
> I have a controller including a grid generated from a join on three tables
> as follows:
>
> applics_fields = ['first_name', 'last_name', 'email', 'rank', 'nerc_elig',
> 'cv', 'coverletter', 'refletter1',
> 'refletter2']
> proposals_fields = ['project_title', 'case_partner']
> pi_fields = ['first_name', 'last_name']
> fields_to_select = [db.applics1[field] for field in applics_fields] +
> \
> [db.proposals[field] for field in proposals_fields]
> + \
> [db.PIs[field] for field in pi_fields]
>
> grid = SQLFORM.grid((db.applics1.project == db.proposals.id) & (db.
> proposals.PI_name == db.PIs.id),
> csv=False,
> deletable=False,
> create=False,
> details=False,
> editable=False,
> fields=fields_to_select,
> headers={'PIs.last_name': 'PI Last Name',
> 'PIs.first_name': 'PI First Name'},
> selectable=[('Download Public PDFs', lambda ids:
> zip_pdfs(ids, track=1))],
> paginate=False)
>
> This generates the correct grid in the view, however when I select the
> records I want to pass to zip_pdfs(), the ids passed to the function are
> those of the PI table, not of the applics1 table.
>
> Is there a way to specify from which table it pulls the ids to be selected
> and passed to zip_pdfs()?
>
> Thanks,
> Francis
>
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.