Thank for your answer.
Ok i understand that this
db((db.v_heatpad.id_depot==db.auth_user.id_depot)&(db.auth_user.id==auth.
user.id)&(db.v_heatpad.padid==db.heatpad.id))
Create a where clause and belong does work with a full SQLcommande (Select 
.... from t1,t2 where .....)
[image: 2019-01-03_15h40_12.png]

I try to create a dropdown with items not used and the one of the current 
record.
I found a work around creating a view (v_heatpad) that list all the items 
not used, the problem is that off course the one used in the "Master 
record" is not displayed
a picture maybe is better than my explanation

[image: 2019-01-03_15h35_01.png]






Le jeudi 3 janvier 2019 13:33:06 UTC+1, Val K a écrit :
>
> Hi!
> `belongs` accepts list, tuple, SQL-string (that can be generated by 
>  `_select `) and in some cases it may be a `query` (see book for details)
> but you're trying to feed it with field-object   
>
>
>
>
> On Thursday, January 3, 2019 at 11:39:34 AM UTC+3, Yann Dulondel wrote:
>>
>>
>>
>> Le mercredi 2 janvier 2019 16:55:54 UTC+1, Yann Dulondel a écrit :
>>>
>>> Hi All 
>>> Happy new year 2019.
>>>
>>> I have an issue with SQL NOT IN
>>> I tried to get a heater pad list(dropdown) in a form.
>>> The heater must be related to user depot and not been used.
>>> If they are used the heater id is set up in table articles
>>>
>>> Queryheat=db((db.heatpad.id_depot==db.auth_user.id_depot)&(db.auth_user.
>>> id==auth.user.id))&db(~db.heatpad.id.belongs(db.articles.heatpad))
>>>
>>> I always get an exception memory error
>>> I have tried with 
>>> Queryheat=db((db.heatpad.id_depot==db.auth_user.id_depot)&(db.auth_user.
>>> id==auth.user.id)&db(~db.heatpad.id.belongs(db.articles.heatpad).select(
>>> db.heatpad.id)))
>>> Queryheat=db((db.heatpad.id_depot==db.auth_user.id_depot)&(db.auth_user.
>>> id==auth.user.id)&(~db.heatpad.id.belongs(db.articles.heatpad).select(db
>>> .heatpad.id)))
>>>
>>> The goal is to generate a SQL commande
>>>
>>  SELECT  X,Y from t1,t2 where t1.id=t2.fkid and x not in( select id from 
>> t3)
>>
>>
>> def show_flexi():
>>>     request.title=T("Braid Logistics Europe")
>>>     flexi_id=request.args(0, cast=int)
>>>     type_article=request.args(1, cast=int)
>>>     records = db.articles(flexi_id)
>>>     db.articles.cod_ref.writable=False
>>>     db.articles.id_stk_article.readable=db.articles.id_stk_article.
>>> writable=False
>>>     db.articles.id.readable=False
>>>     db.articles.isintegrated.readable=db.articles.isintegrated.writable=
>>> False
>>>     depotrecord=db(db.depot.id==auth.user.id_depot).select(db.depot.
>>> useheatpad)
>>>     Row=depotrecord[0]
>>>     if Row['useheatpad']==True:
>>>         myFields=['cod_ref','conteneur','dossier','date_sortie',
>>> 'bulk_id','detruit','heatpad']
>>>         Queryheat=db((db.heatpad.id_depot==db.auth_user.id_depot)&(db.
>>> auth_user.id==auth.user.id))&db(~db.heatpad.id.belongs(db.articles.
>>> heatpad))
>>>         db.articles.heatpad.requires=IS_IN_DB(Queryheat,db.heatpad.id,
>>> '%(cod_ref)s')
>>>     else:
>>>          myFields=['cod_ref','conteneur','dossier','date_sortie',
>>> 'bulk_id','detruit']
>>>     QueryLang=db((db.depot.id==db.auth_user.id_depot)&(db.type_bulkhead.
>>> id_language==db.depot.id_lang)&(db.auth_user.id==auth.user.id))
>>>     db.articles.bulk_id.requires=IS_IN_DB(QueryLang,db.type_bulkhead.id,
>>> '%(name)s')
>>>     #labels={'cod_ref':T('Flexi Number'),'conteneur':T('Conteneur 
>>> Number'),'dossier':T('Braid reference'),'date_sortie':T('Fitting 
>>> date'),'bulk_id':T('Bulkhead'),'detruit':T('Destroyed')}
>>>     flexi=SQLFORM(db.articles
>>>                   ,record=records
>>>                   #,labels=labels
>>>                  ,fields=myFields)
>>>                  #,searchable=False)
>>>
>>>
>>>     flexi.add_button(T('Back'), URL(show_flexlist,args=[type_article],
>>> user_signature=True))
>>>     if flexi.process(onvalidation=flexivalidation).accepted:
>>>             response.flash = T('form accepted')
>>>             
>>> #redirect(URL(show_flexlist,args=[type_article],user_signature=True))
>>>     elif flexi.errors:
>>>            response.flash = T('Form has errors')
>>>
>>>
>>>     return(dict(message=flexi_id,flexi=flexi))
>>> Any idea where i'm wrong ?
>>> Yann
>>>
>>>
>>>

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