Better validators (#97)

* working on improved validators

* full tests for validators

* tweask

* tweaking fields.py

* adding docs

* add history

* fix classmethod validators
This commit is contained in:
Samuel Colvin
2017-11-07 13:06:44 +00:00
committed by GitHub
parent 02dc2f2697
commit dfc5924936
8 changed files with 417 additions and 56 deletions
+35
View File
@@ -0,0 +1,35 @@
from pydantic import BaseModel, ValidationError, validator
class UserModel(BaseModel):
name: str
password1: str
password2: str
@validator('name')
def name_must_contain_space(cls, v):
if ' ' not in v:
raise ValueError('must contain a space')
return v.title()
@validator('password2')
def passwords_match(cls, v, values, **kwargs):
if 'password1' in values and v != values['password1']:
raise ValueError('passwords do not match')
return v
print(UserModel(name='samuel colvin', password1='zxcvbn', password2='zxcvbn'))
# > UserModel name='Samuel Colvin' password1='zxcvbn' password2='zxcvbn'
try:
UserModel(name='samuel', password1='zxcvbn', password2='zxcvbn2')
except ValidationError as e:
print(e)
"""
2 errors validating input
name:
must contain a space (error_type=ValueError track=str)
password2:
passwords do not match (error_type=ValueError track=str)
"""