So I have to define it in Controller like below ?
I just want to use dopdown list from another table just like person, dog 
tables but why it's acting differently when I use primarykey ?

def index():
    (...)
    query = (db.table.field == 'xyz') #in practice 'xyz' would be a variable
    db.table.field.requires=IS_IN_DB(db(query),....)
    form=SQLFORM(...)
    if form.process().accepted: ...
    (...)


On Thursday, August 16, 2012 2:42:03 PM UTC-5, Anthony wrote:
>
> IS_IN_DB does not produce a dropdown when it is in a list, only when it 
> stands alone. If you want the dropdown and want to use additional 
> validators, use it's "_and" argument -- see 
> http://web2py.com/books/default/chapter/29/7#Database-validators.
>
> Anthony
>
> On Thursday, August 16, 2012 3:27:30 PM UTC-4, Omi Chiba wrote:
>>
>> It shows the dropdown list when I define IS_IN_DB like this. (See OK)
>> But doesn't appear when I use the table with primary key (See NG)
>>
>> OK
>>
>> ----------------------------------------------------------------------------------------------
>> db.define_table('person',
>>     Field('modified_on', 'datetime', default=request.now),
>>     Field('name'),
>>     format='%(name)s')
>>
>> db.define_table('dog',
>>     Field('modified_on', 'datetime', default=request.now),
>>     Field('owner', length=64),
>>     Field('name'),
>>     format='%(name)s')
>>
>> db.dog.owner.requires = IS_IN_DB(db,db.person.id,'%(name)s')
>>
>> ----------------------------------------------------------------------------------------------
>>
>> NG
>>
>> ----------------------------------------------------------------------------------------------
>>  
>> # LF - TDMHL
>> db.define_table('TDMHLL00',
>>     Field('HLHSHH', length=3, label="Delivery Method Code"),
>>     Field('HLHSHN', length=30, label="Delivery Method Name"),
>>     format='%(HLHSHN)s',
>>     primarykey=['HLHSHH'])
>>
>> # XR - DELIVERY METHOD
>> db.define_table('EDXHLF00',
>>     Field('HLDIID', length=5,  label="Dist Code"),
>>     Field('HLSCAC', length=4,  label="SCAC"),
>>     Field('HLHSHH', length=3,  label="Delivery Method"),
>>     Field('HLSTEK', length=22,  label="Default Ship Remarks"),
>>     Field('HLUPFL', length=1,  label="OZ UPLOAD FLAG"),
>>     Field('HLCRBY', length=128, default = auth.user.username.upper() if 
>> auth.user else None, label="Created by"),
>>     Field('HLCRDT', 'datetime', default =request.now, label="Created 
>> on"),    
>>     Field('HLUPBY', length=128, update = auth.user.username.upper() if 
>> auth.user else None, label="Updated by"),
>>     Field('HLUPDT', 'datetime', update =request.now, label="Updated on"), 
>>  
>>     primarykey=['HLDIID', 'HLSCAC'])
>>
>> db.EDXHLF00.HLDIID.requires=[IS_NOT_EMPTY(),IS_LENGTH(5,1),IS_UPPER()]
>> db.EDXHLF00.HLSCAC.requires=[IS_NOT_EMPTY(),IS_LENGTH(4,1),IS_UPPER()]
>>
>> db.EDXHLF00.HLHSHH.requires=[IS_NOT_EMPTY(),IS_LENGTH(3,3),IS_UPPER(),IS_IN_DB(db,db.TDMHLL00.HLHSHH)]
>> db.EDXHLF00.HLUPFL.writable = db.EDXHLF00.HLUPFL.readable = False
>> db.EDXHLF00.HLCRBY.writable = False
>> db.EDXHLF00.HLCRDT.writable = False
>> db.EDXHLF00.HLUPBY.writable = False
>> db.EDXHLF00.HLUPDT.writable = False
>>
>> ----------------------------------------------------------------------------------------------
>>  
>>
>>

-- 



Reply via email to