When you need to use additional validators with IS_IN_DB but still want the 
dropbox, you can add the additional validators to the IS_IN_DB validator via 
its '_and' argument -- see 
http://web2py.com/book/default/chapter/07#Database-Validators. However, I'm 
not sure if that works when IS_IN_DB is inside an IS_NULL_OR validator. 
(Actually, IS_NULL_OR has been deprecated in favor of IS_EMPTY_OR.)
 
Anthony

On Tuesday, June 21, 2011 5:16:12 PM UTC-4, Richard wrote:

> Hello, 
>
> I would like to know if the problem I face coming from the validator that I 
> write or is a IS_IN_DB behavior in case of multiple validators??
>
> Here my validator :
>
>  class ONLY_ONE_CAN_BE_FILLED(object): 
>     """Class representing a validator requiring at least one non-empty 
> field in a set. """ 
>     def __init__(
>         self, 
>         others, 
>         error_message='Enter a value in at least one field'
>         ): 
>         self.others = others 
>         self.error_message = error_message 
>
>     def __call__(self, value): 
>         okay = (value, None) 
>         error = (value, self.error_message) 
>         values = [] 
>         values.append(value) 
>         values.extend(self.others) 
>         empties = [] 
>         for v in values: 
>             unused_v, empty = is_empty(v) 
>             empties.append(empty) 
>         if empties.count(False) == 1:
>             return okay
>         else:
>             return error
>
>
> But when i use it like this I lost my dropbox for the FK field1 :
>
>  db.table.field1.requires =\
>     [IS_NULL_OR(IS_IN_DB(db,'othertable.id
> ','%(fieldrepresent)s',orderby=('fieldrepresent'))),
>      ONLY_ONE_CAN_BE_FILLED([request.vars.field2],error_message='Select a 
> volume or an folder')]
>
> I remember I read something about IS_IN_DB and [IS_IN_DB]...
>
> Can I have the dropbox and the multiple validators at the same time??
>
> Thanks
>
> Richard
>
>
>

Reply via email to