mirror of
https://github.com/kennethreitz/pydantic.git
synced 2026-06-05 23:00:18 +00:00
custom validators in schema (#375)
* Test NoneType directly in Field.include_in_schema and add test for validator fix #363 * Update History
This commit is contained in:
committed by
Samuel Colvin
parent
987449a922
commit
725e86a8f0
@@ -6,6 +6,7 @@ History
|
||||
v0.19.0 (unreleased)
|
||||
....................
|
||||
* Support ``Callable`` type hint, fix #279 by @proofit404
|
||||
* Fix schema for fields with ``validator`` decorator, fix #375 by @tiangolo
|
||||
|
||||
v0.18.2 (2019-01-22)
|
||||
....................
|
||||
|
||||
+2
-2
@@ -7,7 +7,7 @@ from .class_validators import Validator, ValidatorSignature, get_validator_signa
|
||||
from .error_wrappers import ErrorWrapper
|
||||
from .types import Json, JsonWrapper
|
||||
from .utils import Callable, ForwardRef, display_as_type, lenient_issubclass, list_like
|
||||
from .validators import NoneType, dict_validator, find_validators, is_none_validator
|
||||
from .validators import NoneType, dict_validator, find_validators
|
||||
|
||||
Required: Any = Ellipsis
|
||||
|
||||
@@ -358,7 +358,7 @@ class Field:
|
||||
"""
|
||||
False if this is a simple field just allowing None as used in Unions/Optional.
|
||||
"""
|
||||
return len(self.validators) != 1 or self.validators[0][1] != is_none_validator
|
||||
return self.type_ != NoneType
|
||||
|
||||
def is_complex(self):
|
||||
"""
|
||||
|
||||
+16
-1
@@ -10,7 +10,7 @@ from uuid import UUID
|
||||
|
||||
import pytest
|
||||
|
||||
from pydantic import BaseModel, Schema, ValidationError
|
||||
from pydantic import BaseModel, Schema, ValidationError, validator
|
||||
from pydantic.schema import get_flat_models_from_model, get_flat_models_from_models, get_model_name_map, schema
|
||||
from pydantic.types import (
|
||||
DSN,
|
||||
@@ -1104,3 +1104,18 @@ def test_optional_dict():
|
||||
|
||||
assert Model().dict() == {'something': None}
|
||||
assert Model(something={'foo': 'Bar'}).dict() == {'something': {'foo': 'Bar'}}
|
||||
|
||||
|
||||
def test_field_with_validator():
|
||||
class Model(BaseModel):
|
||||
something: Optional[int] = None
|
||||
|
||||
@validator('something')
|
||||
def check_field(cls, v, *, values, config, field):
|
||||
return v
|
||||
|
||||
assert Model.schema() == {
|
||||
'title': 'Model',
|
||||
'type': 'object',
|
||||
'properties': {'something': {'type': 'integer', 'title': 'Something'}},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user