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