Задать вопрос
sergey_1990
@sergey_1990
1

Как хранить модели sqlmodel в разных файлах и избавиться от ошибок PydanticUndefinedAnnotation?

Добрый день коллеги, пытаюсь пересесть с джанги на фастапи и вот какая у меня проблема, КАК ХРАНИТЬ МОДЕЛИ sqlmodel В разных файлах и при этом иметь возможность вложенной выгрузки связанных сущностей, Получаю или Циклический импорт (что вполне логично), смотрю доки https://sqlmodel.tiangolo.com/tutorial/code-struct..., добавляю TYPE_CHECKING, тогда получаю pydantic.errors.PydanticUndefinedAnnotation: name 'Track' is not defined, уверен я не 1 с такой проблемой сталкиваюсь
#Файл app/race/models.py
if TYPE_CHECKING:
    from app.track.models import Track

class RaceDetail(RaceBase):
    """Заезд"""

    tracks: List["Track"]


#Файл app/track/models.py
from app.race.models import Race
class Track(TrackBase, table=True):
    """Дорожка таблица"""

    __table_args__ = (
        ForeignKeyConstraint(
            ["race_id"],
            [f"{Race.__tablename__}.id"],
            ondelete="CASCADE",
        ),
        ForeignKeyConstraint(
            ["sportsman_id"],
            [f"{Sportsman.__tablename__}.id"],
            ondelete="SET NULL",
        ),
    )
    id: Optional[int] = Field(default=None, primary_key=True)
    race_id: int
    race: Race = Relationship(back_populates="tracks")
    sportsman_id: Optional[int]
    sportsman: Sportsman = Relationship(back_populates="tracks")

#маршрут
@router.get("/{race_id}", response_model=RaceDetail)
def read_race(race_id: int, session: Session = Depends(get_session)):
    race = session.get(Race, race_id)
    if not race:
        raise HTTPException(status_code=404, detail="race not found")
    return race

Код не весь скопировал а только то где вопросы
  • Вопрос задан
  • 136 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы