When I send a multi-part form data it returns the error: "Unprocessable Entity"
the api endpoint:
@router.post('/', response_model=schemas.Category)
def add_category(
file: UploadFile,
category: schemas.CategoryCreate = Depends(schemas.CategoryCreate.as_form),
db: Session = Depends(get_db)
):
print(category)
print(file.filename)
The BaseModel classes:
class ProductCreate(BaseModel):
title: str
description: str
price: float
time: float
photo_url: str
@as_form
class CategoryCreate(BaseModel):
name: str
products: List[ProductCreate] = []
the as_form function:
def as_form(cls: Type[BaseModel]):
new_parameters = []
for field_name, model_field in cls.__fields__.items():
model_field: ModelField # type: ignore
new_parameters.append(
inspect.Parameter(
model_field.alias,
inspect.Parameter.POSITIONAL_ONLY,
default=Form(...) if not model_field.required else Form(model_field.default),
annotation=model_field.outer_type_,
)
)
async def as_form_func(**data):
return cls(**data)
sig = inspect.signature(as_form_func)
sig = sig.replace(parameters=new_parameters)
as_form_func.__signature__ = sig # type: ignore
setattr(cls, 'as_form', as_form_func)
return cls
note :
When I remove the field:
products: List[ProductCreate] = []
from CategoryCreate BaseModel, it works fine!
Thank you in advance