All default validators are IS_EMPTY_OR unless the field is notnull=True - except for reference types, which never are IS_EMPTY_OR.
This seems odd - why do reference types require a value by default, but all other field types do not? Any good reason for that? Or is it a bug?
in pydal/objects.py get_default_validator()