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