From e00dba322badd4b080475801889c8fc0dd7d4639 Mon Sep 17 00:00:00 2001 From: Benjamin Sitruk Date: Sun, 25 Oct 2020 19:57:08 +0200 Subject: [PATCH] Docs: Add validators to dynamic model (#1963) * Add dynamic validators to doc * Update models_dynamic_validators.py * Update models_dynamic_validators.py * Adding example (success and error) * Update models_dynamic_validators.py --- docs/examples/models_dynamic_validators.py | 26 ++++++++++++++++++++++ docs/usage/models.md | 6 +++++ 2 files changed, 32 insertions(+) create mode 100644 docs/examples/models_dynamic_validators.py diff --git a/docs/examples/models_dynamic_validators.py b/docs/examples/models_dynamic_validators.py new file mode 100644 index 0000000..132624c --- /dev/null +++ b/docs/examples/models_dynamic_validators.py @@ -0,0 +1,26 @@ +from pydantic import create_model, ValidationError, validator + + +def username_alphanumeric(cls, v): + assert v.isalnum(), 'must be alphanumeric' + return v + + +validators = { + 'username_validator': + validator('username')(username_alphanumeric) +} + +UserModel = create_model( + 'UserModel', + username=(str, ...), + __validators__=validators +) + +user = UserModel(username='scolvin') +print(user) + +try: + UserModel(username='scolvi%n') +except ValidationError as e: + print(e) diff --git a/docs/usage/models.md b/docs/usage/models.md index 69c07c5..c632af1 100644 --- a/docs/usage/models.md +++ b/docs/usage/models.md @@ -370,6 +370,12 @@ extending a base model with extra fields. {!.tmp_examples/models_dynamic_inheritance.py!} ``` +You can also add validators by passing a dict to the `__validators__` argument. + +```py +{!.tmp_examples/models_dynamic_validators.py!} +``` + ## Custom Root Types Pydantic models can be defined with a custom root type by declaring the `__root__` field.