How to show conditional fields with multiple conditions

29 views
Skip to first unread message

Sandeep Patel

unread,
May 9, 2018, 3:08:59 AM5/9/18
to web2py-users
Hello,

I want to show form fields based on the user input so I used conditional fields, what happens to me whenever I select ''FIRE" or "FIRE1" fields appear in my form but when I select "Both" nothing appear in my form

what going wrong with my code, please correct me

# Model.py
auth.settings.extra_fields['auth_user']  = [
        Field('whr_insurance','boolean',label="Warehouse Insurance ?"),
        Field('insrrance_list',requires=IS_IN_SET(['FIRE','FIRE1','Both'])),
        Field('sfs_issured_by'),
        Field('sfs_issured_p'),
        Field('sfs_validity','date'),
        Field('bhb_insured_by'),
        Field('bhb_insured_p'),
        Field('bhb_validity','date')
]
db.auth_user.insrrance_list.show_if = (db.auth_user.whr_insurance == True)
db.auth_user.sfs_issured_by.show_if = ( db.auth_user.insrrance_list == 'FIRE or db.auth_user.insrrance_list == 'Both')
db.auth_user.sfs_issured_p.show_if = (db.auth_user.insrrance_list == 'FIRE' or db.auth_user.insrrance_list == 'Both' )
db.auth_user.sfs_validity.show_if = (db.auth_user.insrrance_list == 'FIRE' or db.auth_user.insrrance_list == 'Both')
db.auth_user.bhb_insured_by.show_if = (db.auth_user.insrrance_list == 'FIRE1' or db.auth_user.insrrance_list == 'Both')
db.auth_user.bhb_insured_p.show_if = (db.auth_user.insrrance_list == 'FIRE1' or db.auth_user.insrrance_list == 'Both')
db.auth_user.bhb_validity.show_if = (db.auth_user.insrrance_list == 'FIRE1' or db.auth_user.insrrance_list == 'Both')



Thank's

Marcelo Huerta

unread,
May 9, 2018, 8:57:25 AM5/9/18
to web2py-users
Untested, but, shouldn't you write the conditions as

((db.auth_user.insrrance_list == 'FIRE') or (db.auth_user.insrrance_list == 'Both'))

?

(Notice the extra parentheses.)

Anthony

unread,
May 9, 2018, 9:40:00 AM5/9/18
to web...@googlegroups.com
I'm not sure that show_if supports & and | queries, but if it does, the correct syntax for a DAL query is:

(db.auth_user.insrrance_list == 'FIRE') | (db.auth_user.insrrance_list == 'Both')

You cannot use "and" and "or" in DAL queries.

Anthony
Reply all
Reply to author
Forward
0 new messages