You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
class Pets(BaseModel):
__root__: List[str]
class Controller(HTTPMethodView):
@validate(json=Pets)
async def post(self, req: request.Request, body: Pets):
return json({})
Expected behavior
sanic_ext.exceptions.ValidationError: Invalid request body: EncryptVO. Error: ModelMetaclass object argument after ** must be a mapping, not list
Additional context
how to fix:
extra/validation/validators.py line 33
[old]
def _validate_instance(model, body, allow_coerce):
data = clean_data(model, body) if allow_coerce else body
return model(**data)
[new]
def _validate_instance(model, body, allow_coerce):
data = clean_data(model, body) if allow_coerce else body
from sanic_ext.utils.typing import is_pydantic
if is_pydantic(model) and isinstance(body,list):
return model.parse_obj(body)
return model(**data)
2.extensions/openapi/types.py line 301
[old]
if is_pydantic(value):
try:
value = value.__pydantic_model__
except AttributeError:
...
extra = value.schema()["properties"]
[new]
if is_pydantic(value):
try:
value = value.__pydantic_model__
except AttributeError:
...
value_schema = value.schema()
if "properties" in value_schema:
extra = value_schema["properties"]
else:
extra = value_schema
The text was updated successfully, but these errors were encountered:
Add `@validate_body_root_model` which is a drop-in replacement for Sanic's `@validate` when validating a `RootModel` or a model deriving from it.
The decorator should be replaced by `@validate` once sanic-org/sanic-ext#198 is fixed.
Environment (please complete the following information):
Describe the bug
ex:
curl --location --request POST 'http://127.0.0.1:8080/testarray'
--header 'Content-Type: application/json'
--data-raw '[ "dog","cat"]'
the pydantic example:
https://docs.pydantic.dev/latest/usage/models/ Custom Root Types
Expected behavior
sanic_ext.exceptions.ValidationError: Invalid request body: EncryptVO. Error: ModelMetaclass object argument after ** must be a mapping, not list
Additional context
how to fix:
[old]
[new]
2.extensions/openapi/types.py line 301
[old]
[new]
The text was updated successfully, but these errors were encountered: