In additon, adding a second IS_INT_IN_RANGE validation condition is sufficient to coerce the field back to int.
form=SQLFORM.factory(
Field('dogid', 'integer', requires=[IS_IN_DB(db(db.dog), 'dog.id'),
IS_INT_IN_RANGE(0, 1000)])
)
So it looks like IS_IN_DB is somehow getting confused about the field's
type.
--

