stympel
@stympel
подпивасник

Как исключить поле модели при создании в FastAPI?

У меня есть некая модель:
from pydantic import BaseModel, Field


class SomeModel(BaseModel):
    id: int = Field(...)
    some_field_1: int = Field(...)
    some_field_2: int = Field(...)
    some_field_3: int = Field(...)


Как я могу при создании этой модели исключить поле ID, так как оно у меня serial и его не надо присваивать самому?
600011f8d8818215833938.png
  • Вопрос задан
  • 1593 просмотра
Решения вопроса 1
stympel
@stympel Автор вопроса
подпивасник
Решил через наследование
from pydantic import BaseModel, Field


class SomeModel(BaseModel):
    some_field_1: int = Field(...)
    some_field_2: int = Field(...)
    some_field_3: int = Field(...)


class SomeModelWithID(SomeModel):
    id: int = Field(...)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@thelans
Есть более изящный вариант. Использовать private или protected поля.
class SomeModel(BaseModel):
    _id: int = Field(...)
    some_field_1: int = Field(...)
    some_field_2: int = Field(...)
    some_field_3: int = Field(...)
Ответ написан
Комментировать
@Xewus
Дедушка на расслабоне
from pydantic import BaseModel, Field

class SomeModel(BaseModel):
    id: int = Field(..., exclude=True)
    some_field_1: int = Field(...)
    some_field_2: int = Field(...)
    some_field_3: int = Field(...)

exclude: exclude this field when dumping (.dict and .json) the instance.

https://pydantic-docs.helpmanual.io/usage/schema/#...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы