-
Notifications
You must be signed in to change notification settings - Fork 1
Validators
Circuit edited this page Jan 13, 2022
·
2 revisions
apgorm also supports python-side validation in addition to constraints. They can be used like this:
def check_gt_zero(value: int) -> bool:
if value <= 0:
return False
return True
my_int_field = Int().field()
my_int_field.add_validator(check_gt_zero)Now, if you pass a value that is less than 1, you will get an InvalidFieldValue exception.
Note: Validators are ignored by methods such as .fetch(). This way you can add a validator to a field even if the database already contains values that would be considered invalid without breaking things.
If you want a more descriptive exception, you can raise InvalidFieldValue inside of the validator instead of just returning False. For example:
def check_gt_zero(value: int) -> bool:
if value > 0:
return True
raise apgorm.exceptions.InvalidFieldValue(f"{value} must be greater than 0")