Pydantic как получить ценность отношений

#sqlalchemy #fastapi #pydantic

Вопрос:

Мне нужно получить одно значение из модели отношений «Много к одному pydantic BaseModel «. Как я могу это сделать?

Класс моих детей

 class Picnic(Base):
    __tablename__ = 'picnic'

    id = Column(Integer, primary_key=True, autoincrement=True)
    city_id = Column(Integer, ForeignKey('city.id'), nullable=False)

    city = relationship('City', backref='picnics')


class City(Base):
    __tablename__ = 'city'

    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String, unique=True, nullable=False, index=True)

 

Мне нужно получить значение названия города :

 class Picnics(BaseModel):
    id: int
    # city: str[CityBaseInDB.name] not working
    # city: str = Field(source='city.name') not working 
    # city_name: str not working


    class Config:
        orm_mode: bool = True
 

Комментарии:

1. Валидатор может изменить возвращаемое значение из заданного значения; вы рассматривали возможность их использования? pydantic-docs.helpmanual.io/usage/validators

2. Спасибо за предложение, это действительно работает, но в схеме swagger также отображается объект города: «город»: {«имя»: «строка»}

3. Каково ваше определение этой области? Это должно быть str поле, а затем использовать валидатор для преобразования City объекта.