Можно ли изменить атрибуты Pydanti c BaseModel сразу после его создания? - PullRequest
1 голос
/ 02 августа 2020

Я начинаю изучать FastAPI и Pydanti c и сомневаюсь. У меня есть следующий подкласс BaseModel

class Product(BaseModel):
  image: str
  name: str

После сохранения этой модели я хочу, чтобы image сохранил значение /static/ + image, чтобы создать красивую гиперссылку конечной точки REST. Это возможно с использованием __post_init_post_parse__ хука pydanti c dataclass, но поскольку FastAPI в настоящее время не поддерживает его, мне было интересно, что может быть обходным путем.

1 Ответ

0 голосов
/ 02 августа 2020

Вы можете использовать собственный validator:

>>> from pydantic import BaseModel, validator
>>> class Product(BaseModel):
    image: str
    name: str
    @validator('image')
    def static_mage(cls, image):
        return '/static/{}'.format(image)


>>> p = Product(image='pic.png', name='product_1')
>>> p
Product(image='/static/pic.png', name='product_1')
...