Hi,
from validators.py:
342 class IS_IN_DB(Validator):
343 """
344 example::
345
346 INPUT(_type='text', _name='name',
347 requires=IS_IN_DB(db, db.table, zero=''))
348
349 used for reference fields, rendered as a dropbox
350 """
But I can't use the documented syntax: IS_IN_DB(db, db.table). I had
to use explicit db.table.id as argument.
It looks like the current code (1.91.6) does not accept a table as
argument. Apparently, it cannot figure out that when you specify a
table instead of a field it should use the table's id field. It relies
on the field representation as string to extract the field name,
splitting it by dots, as shows line 371 from the class' constructor:
370 self.field = field
371 (ktable, kfield) = str(self.field).split('.')
Wouldn't be better to test the argument with something like isinstance() first?
Sorry if I misunderstood something, but I think that if this is not a
bug, then the documentation should be updated.
I also didn't check the code for IS_NOT_IN_DB(), but I guess this
class may have the same issue.
Regards,
Fabiano.