Загрузка...

Как правильно сделать метод put? (Обновиление данных пользователя)

Тема в разделе Python создана пользователем IFearNobody 3 янв 2025. 290 просмотров

  1. IFearNobody
    IFearNobody Автор темы 3 янв 2025 179 14 дек 2022
    Есть такая задача:
    Есть модель UserStructure, в ней есть поля которые нельзя обновлять. Как сделать ограничение на редактирование определенных полей?


    Python
    @router.put(
    path='/me',
    status_code=status.HTTP_200_OK,
    description='Обновляет информацию своего профиля'
    )
    async def get_my_account(
    current_user: Annotated[UserStructure, Depends(get_current_user)],
    new_data: UserStructure = Body(..., description='Новые данные пользователя')
    ) -> JSONResponse:
    ...
    Модель:

    Python
    class UserStructure(BaseModel):
    id: int | None = Field(None, description='Уникальный идентификатор пользователя')
    login: str = Field(..., description='Логин пользователя')
    name: str = Field(..., description='Имя пользователя')
    surname: str = Field(..., description='Фамилия пользователя')
    email: str = Field(..., description='Электронная почта')
    phone_number: str = Field(..., description='Номер телефона')
    group_id: int = Field(..., description='ID группы (например: Администраторы, Курьеры, Бухгалтеры)')
    city_id: int = Field(..., description='ID города')
    prefix: str = Field(..., description='Префикс для идентификации')
    password_hash: str = Field(..., description='Хеш пароля, сами пароли не храним')
    status: str | None = Field(None, description='Статус пользователя')
    two_factor: bool = Field(False, description='Включена ли двухфакторная аутентификация')
    is_blocked: bool = Field(False, description='Заблокирован ли пользователь')
    requires_password_reset: bool = Field(False, description='Требуется ли смена пароля при следующем входе')
    created_at: datetime = Field(..., description='Дата создания пользователя')

    К примеру, нужно сделать так что бы created_at невозможно было редактировать.
     
  2. RUPTES
    RUPTES 3 янв 2025 Нечего тут смотреть... 56 23 янв 2019
    Field(..., const=True)
     
    3 янв 2025 Изменено
    1. Посмотреть предыдущие комментарии (1)
    2. IFearNobody Автор темы
      RUPTES, такого чуда нет в функции Field)
    3. IFearNobody Автор темы
      RUPTES, он называется "exclude" а не "const"
  3. TheAzot
    Это прикол фаст апи, даже если в сваггере ты можешь изменять то в бд все будет окей главное поставить default
    --- Сообщение объединено с предыдущим 4 янв 2025
    Для этого примера делаешь two_factor: bool = Field(False, description='Включена ли двухфакторная аутентификация', default=False) - и все
     
  4. GERO777
    GERO777 4 янв 2025 482 23 апр 2017
     
  5. ezbooz
    ezbooz 4 янв 2025 997 29 мар 2018
    новую схему пайдантика просто сделай для апдейта с нужными полями
     
Top
Загрузка...