If you just do this it should do what you ask:

db.define_table('target',
    Field('name', required=True),
    Field('address', required=True),
    Field('comment', default=''), format='%(name)s')

db.define_table('pac',
    Field('name', required=True),
    Field('comment', default=''),
    Field('default_target', db.target),
    Field('owner_id', db.auth_user),format='%(name)s')

db.define_table('target2pac',
    Field('pac_id', db.pac, required=True),
    Field('target_id', db.target, required=True, unique=True))

OR

db.target2pac.target_id.requires = IS_IN_DB(db,'target.id','%
(name)s',_and=IS_NOT_IN_DB(db,db.target2pac.target_id))




On Nov 25, 5:12 pm, ramazotto <[email protected]> wrote:
> Hi,
>
> I have a problem with displaying a table id as a dropdown list in a
> form. Database looks like that:
>
> db.define_table('target',
>     Field('name', required=True),
>     Field('address', required=True),
>     Field('comment', default=''), format='%(name)s')
>
> db.define_table('pac',
>     Field('name', required=True),
>     Field('comment', default=''),
>     Field('default_target', db.target),
>     Field('owner_id', db.auth_user))
>
> db.define_table('target2pac',
>     Field('pac_id', db.pac, required=True),
>     Field('target_id', db.target, required=True))
>
> ....
>
> db.target2pac.pac_id.requires = IS_IN_DB(db, db.pac.id, '%(name)s')
> db.target2pac.target_id.requires = IS_NOT_IN_DB(db,
> db.target2pac.target_id)
>
> The problem is the last line, whenever I add this line, the
> "db.target2pac.target_id" field in a form is not shown as a dropdown
> list anymore, but as a normal text field. Any idea?
>
> Regards,
>     Klaus.

Reply via email to