errors.extend(errors_)
if errors:
raise ValidationError(errors)
+ if skip_defaults and isinstance(response, BaseModel):
+ value = response.dict(skip_defaults=skip_defaults)
return jsonable_encoder(
value,
include=include,
--- /dev/null
+from typing import Optional
+
+from fastapi import FastAPI
+from pydantic import BaseModel
+from starlette.testclient import TestClient
+
+app = FastAPI()
+
+
+class SubModel(BaseModel):
+ a: Optional[str] = "foo"
+
+
+class Model(BaseModel):
+ x: Optional[int]
+ sub: SubModel
+
+
+@app.get("/", response_model=Model, response_model_skip_defaults=True)
+def get() -> Model:
+ return Model(sub={})
+
+
+client = TestClient(app)
+
+
+def test_return_defaults():
+ response = client.get("/")
+ assert response.json() == {"sub": {}}