#patch #fastapi
Вопрос:
Я изучаю fastAPI и не знаю, как частично обновить информацию о пользователе. Данное решение состоит в том, чтобы установить exclude_unset=True, но я не знаю, где это написать. Вот мои фрагменты кода:
routers/user.py:
@router.patch('/{id}', status_code=status.HTTP_202_ACCEPTED)
def update_user(id, request: sUser, db: Session = Depends(get_db)):
user = db.query(mUser).filter(mUser.id == id)
if not user.first():
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f'The User with the id {id} is not found')
user.update(request.dict(exclude={'createdAt'}, exclude_unset=True))
db.commit()
return user.first()
PS exclude = {‘createdAt’} работает, но exclude_unset=True не работает..
Вот моя схема пользователя:
schemas.py
class User(BaseModel):
username: str
dob: datetime.date
password: str
createdAt: datetime.datetime
Ответ №1:
это потому, что вы используете его в экземпляре User
модели.
Если вы хотите получать частичные обновления, очень полезно использовать параметр exclude_unset
в модели .dict()
Pydantic .
так что используйте его на объекте Pydantic.
более подробная информация в документации: https://pydantic-docs.helpmanual.io/usage/exporting_models/#modeldict