ValidationError
pydantic.ValidationError
Stack trace
Traceback (most recent call last):
File "/app/main.py", line 42, in <module>
user = UserModel(**data)
File "/usr/local/lib/python3.10/site-packages/pydantic/main.py", line 341, in __init__
raise ValidationError(errors, model_cls)
pydantic.ValidationError: 1 validation error for UserModel
field_name
field required (type=value_error.missing) Why it happens
Pydantic v2 introduced significant changes to model validation, including stricter field requirements and new config options. FastAPI apps using Pydantic v1-style models or relying on implicit behaviors now encounter validation errors because fields must be explicitly declared and configured.
Detection
Monitor FastAPI startup logs and API request failures for pydantic.ValidationError exceptions referencing missing fields or config errors after upgrading to Pydantic v2.
Causes & fixes
Pydantic v2 requires explicit field defaults or default_factory for optional fields
Add default values or use Field(default=...) for all optional fields in your Pydantic models.
Model config changed: 'Config' class replaced by 'model_config' dict in Pydantic v2
Replace Config class with model_config dictionary in your Pydantic models to set config options.
FastAPI dependencies or extensions incompatible with Pydantic v2 validation changes
Upgrade FastAPI and related packages to versions compatible with Pydantic v2 or pin Pydantic to v1.x until support is available.
Code: broken vs fixed
from pydantic import BaseModel
class UserModel(BaseModel):
name: str
age: int # optional field without default
user = UserModel(name='Alice') # Raises ValidationError: field required import os
from pydantic import BaseModel, Field
class UserModel(BaseModel):
name: str
age: int | None = Field(default=None) # Added default to fix validation
user = UserModel(name='Alice') # Works correctly
print(user)
# Note: Use os.environ for API keys if needed Workaround
Catch pydantic.ValidationError exceptions and provide fallback defaults or transform input data before model instantiation to avoid crashes.
Prevention
Use Pydantic v2 model_config for configuration and always declare defaults for optional fields; test FastAPI apps thoroughly after Pydantic upgrades.