-
First check
DescriptionConsidering the following class and route definition: class DocumentUpdateForm():
def __init__(
self,
date: datetime.date = fastapi.Form(...),
file_object: Optional[fastapi.UploadFile] = fastapi.File(None),
name: str = fastapi.Form(...),
description: str = fastapi.Form(...),
category: str = fastapi.Form(...),
) -> None:
self.date = date
self.file_object = file_object
self.name = name
self.description = description
self.category = category @router.put('/{date}/{uuid}')
def update_document(
date: datetime.date,
uuid: str,
form_in: schema.DocumentUpdateForm = fastapi.Depends(),
) -> None:
return The result is AssertionError. server_development | Traceback (most recent call last):
server_development | File "/usr/local/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
server_development | self.run()
server_development | File "/usr/local/lib/python3.8/multiprocessing/process.py", line 108, in run
server_development | self._target(*self._args, **self._kwargs)
server_development | File "/usr/local/lib/python3.8/site-packages/uvicorn/subprocess.py", line 73, in subprocess_started
server_development | target(sockets=sockets)
server_development | File "/usr/local/lib/python3.8/site-packages/uvicorn/main.py", line 341, in run
server_development | loop.run_until_complete(self.serve(sockets=sockets))
server_development | File "uvloop/loop.pyx", line 1456, in uvloop.loop.Loop.run_until_complete
server_development | File "/usr/local/lib/python3.8/site-packages/uvicorn/main.py", line 348, in serve
server_development | config.load()
server_development | File "/usr/local/lib/python3.8/site-packages/uvicorn/config.py", line 274, in load
server_development | self.loaded_app = import_from_string(self.app)
server_development | File "/usr/local/lib/python3.8/site-packages/uvicorn/importer.py", line 20, in import_from_string
server_development | module = importlib.import_module(module_str)
server_development | File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
server_development | return _bootstrap._gcd_import(name[level:], package, level)
server_development | File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
server_development | File "<frozen importlib._bootstrap>", line 991, in _find_and_load
server_development | File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
server_development | File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
server_development | File "<frozen importlib._bootstrap_external>", line 783, in exec_module
server_development | File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
server_development | File "./app/main.py", line 7, in <module>
server_development | from app.endpoints import country, data, document, login, user
server_development | File "./app/endpoints/document.py", line 104, in <module>
server_development | def update_document(
server_development | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 464, in decorator
server_development | self.add_api_route(
server_development | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 407, in add_api_route
server_development | route = route_class(
server_development | File "/usr/local/lib/python3.8/site-packages/fastapi/routing.py", line 334, in __init__
server_development | self.dependant = get_dependant(path=self.path_format, call=self.endpoint)
server_development | File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 267, in get_dependant
server_development | sub_dependant = get_param_sub_dependant(
server_development | File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 102, in get_param_sub_dependant
server_development | return get_sub_dependant(
server_development | File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 138, in get_sub_dependant
server_development | sub_dependant = get_dependant(
server_development | File "/usr/local/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 280, in get_dependant
server_development | assert is_scalar_field(
server_development | AssertionError: Path params must be of one of the supported types Any ideas what is wrong? What am I missing? If I remove |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
You are declaring the same name Consider them all as parameters of the same function, even if they are in a dependency, so one of them ends up overwriting the other. You can change the form from typing import Union, Optional
import datetime
from fastapi import FastAPI
import fastapi
app = FastAPI()
class DocumentUpdateForm():
def __init__(
self,
date_form: datetime.date = fastapi.Form(..., alias="date"),
file_object: Optional[fastapi.UploadFile] = fastapi.File(None),
name: str = fastapi.Form(...),
description: str = fastapi.Form(...),
category: str = fastapi.Form(...),
) -> None:
self.date = date
self.file_object = file_object
self.name = name
self.description = description
self.category = category
@app.put('/{date}/{uuid}')
def update_document(
date: datetime.date,
uuid: str,
form_in: DocumentUpdateForm = fastapi.Depends(),
) -> None:
return |
Beta Was this translation helpful? Give feedback.
-
Assuming the original issue was solved, it will be automatically closed now. But feel free to add more comments or create new issues. |
Beta Was this translation helpful? Give feedback.
You are declaring the same name
date
in 2 places, a path parameter and a form.Consider them all as parameters of the same function, even if they are in a dependency, so one of them ends up overwriting the other.
You can change the form
date
to be nameddate_form
, and then use analias
to make the form field still bedate
: