That is EXACTLY what I want.  Sorry to bother you with something like this 
that I totally missed in the doc and reading through the code.

-Jim

On Monday, October 13, 2014 2:41:29 PM UTC-5, Niphlod wrote:
>
> what if you pass to field_id the one you want ?
>
> On Monday, October 13, 2014 9:32:19 PM UTC+2, Jim S wrote:
>>
>> But, I'm linking 3 tables using the 'left' argument.  It is getting the 
>> id from the last linked table.  
>>
>>     open_feed_orders = db((((db.feedOrder.invoiceNumber == None) |
>>                            (db.feedOrder.invoiceNumber == 0)) &
>>                           db.feedOrder.siteId == site_id))._select(db.
>> feedOrder.feedOrderId)
>>     used_feed_order_lines = db(db.workorder_finish.id > 0)._select(db.
>> workorder_finish.feed_order_line)
>>     queries = [db.feedOrderLine.feedOrderLineId > 0]
>>     queries.append(db.feedOrderLine.feedOrderId.belongs(open_feed_orders
>> ))
>>     queries.append(~db.feedOrderLine.feedOrderLineId.belongs(
>> used_feed_order_lines))
>>     queries.append(db.feedOrder.siteId == site_id)
>>     queries.append(db.feedLoad.deliverOn>=from_date)
>>     queries.append(db.feedLoad.deliverOn<=to_date)
>>     queries.append(~db.feedOrderLine.productNumber.belongs(['I00255',
>> 'I00279','I00280','I00289']))
>>     query = reduce(lambda a, b: (a & b), queries)
>>
>>
>>     orderby = [db.feedOrderLine.productNumber, db.feedOrderLine.
>> productName]
>>     left = [db.feedOrder.on(db.feedOrderLine.feedOrderId == db.feedOrder.
>> feedOrderId),
>>             db.feedLoad.on(db.feedOrder.feedLoadId == db.feedLoad.
>> feedLoadId)]
>>
>>
>>     fields = [db.feedLoad.deliverOn,
>>               db.feedOrder.orderNumber,
>>               db.feedLoad.loadNumber,
>>               db.feedOrderLine.productNumber,
>>               db.feedOrderLine.productName,
>>               db.feedOrderLine.quantityOrdered,
>>               db.feedOrderLine.feedOrderLineId]
>>
>>
>>     grid = SQLFORM.grid(query,fields=fields,create=False,editable=False,
>>                         details=False,deletable=False,csv=False,
>>                         searchable=False, orderby=orderby, left=left,
>>                         selectable=lambda ids:redirect(URL('workorder',
>>                                                         
>> 'new_from_sales_order_confirm',
>>                                                         vars=dict(ids=ids
>> )), client_side=True),
>>                         maxtextlength=256,paginate=256, formstyle=
>> my_formstyle, ui=grid_ui)
>>
>>
>> It is bringing the ID field from the feedLoad table.  I want the id from 
>> the feedOrderLine table.  Also, I've tried changing the order of the fields 
>> in my 'fields' list to have one from feedOrderLine first, but it doesn't 
>> care.
>>
>> -Jim
>>
>>
>>
>> On Monday, October 13, 2014 2:24:22 PM UTC-5, Niphlod wrote:
>>>
>>> I'm assuming it gets the quite-obvious field_id parameter. If none, it 
>>> just gets the first 'id' field of the first table in the join.
>>>
>>> On Monday, October 13, 2014 5:38:51 PM UTC+2, Jim S wrote:
>>>>
>>>> I see this was never answered, but I'm looking for the same thing.  How 
>>>> does SQLFORM.grid's 'selectable' determine which field to use for the 
>>>> 'ids'?  I have a left join as well, and it is picking the 'id' field from 
>>>> the wrong table.  Is there a way to specify which table to use?
>>>>
>>>> -Jim
>>>>
>>>> On Monday, March 12, 2012 7:41:18 AM UTC-5, Johann Spies wrote:
>>>>>
>>>>> When using the following grid:
>>>>>
>>>>>     query = ((db.akb_authors.id.belongs(ids))&
>>>>>              (db.akb_authors_article_link.author == 
>>>>> db.akb_authors.uuid)&
>>>>>              (db.akb_authors_article_link.article == 
>>>>> db.akb_articles.uuid)&
>>>>>              (db.akb_journal.uuid == db.akb_articles.journal))
>>>>>     left = (db.akb_authors_article_link.on((db.akb_authors.uuid == 
>>>>> db.akb_authors_article_link.author)&
>>>>>              (db.akb_authors.id.belongs(ids))&
>>>>>              (db.akb_authors_article_link.author == 
>>>>> db.akb_authors.uuid)&
>>>>>              (db.akb_authors_article_link.article == 
>>>>> db.akb_articles.uuid)&
>>>>>              (db.akb_journal.uuid == db.akb_articles.journal)))
>>>>>     fields = [db.akb_authors.id, db.akb_authors.surname, 
>>>>> db.akb_authors.firstname,
>>>>>               db.akb_authors.name, db.akb_authors.birthdate, 
>>>>> db.akb_authors.gender,
>>>>>               db.akb_authors.race, db.akb_authors.address, 
>>>>> db.akb_journal.title,
>>>>>               db.akb_journal.subject ]
>>>>>     headers = {'akb_journal.title': 'Journal'}
>>>>>     form = SQLFORM.grid(query, fields=fields, maxtextlength = 100,
>>>>>                         deletable = False,
>>>>>                         editable = False,
>>>>>                         details = False,
>>>>>                         create = False,
>>>>>                         headers = headers,
>>>>>                         selectable = lambda ids: 
>>>>> hanteer_verfyning(ids),
>>>>>                         orderby = db.akb_authors.auth_id|
>>>>> db.akb_authors.id)
>>>>>
>>>>> the grid use the id's of the akb_articles.  Is there an easy way to 
>>>>> convince it to use the id specified in [fields] in stead?
>>>>>
>>>>> Regards
>>>>> Johann
>>>>> -- 
>>>>> Because experiencing your loyal love is better than life itself, 
>>>>> my lips will praise you.  (Psalm 63:3)
>>>>>
>>>>>

-- 
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.

Reply via email to