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