Anonymous
Невозможно разрешить циклическую ссылку между двумя моделями
Сообщение
Anonymous » 04 фев 2026, 06:02
У меня есть эти две модели (я обрезал лишние поля, чтобы они были читабельными):
Код: Выделить всё
class Forum(LegacyBase):
__tablename__ = "forums"
id: Mapped[int] = mapped_column("forumID", primary_key=True)
parent_id: Mapped[int] = mapped_column(
"parentID", ForeignKey("forums.forumID"), nullable=True
)
parent: Mapped["Forum"] = relationship(
"Forum", back_populates="children", remote_side="Forum.id"
)
children: Mapped[list["Forum"]] = relationship(back_populates="parent")
game_id: Mapped[int | None] = mapped_column(
"gameID", ForeignKey("games.gameID"), nullable=True
)
game: Mapped["Game"] = relationship(
"Game",
back_populates="root_forum",
primaryjoin="Forum.game_id == Game.id",
foreign_keys=[game_id],
post_update=True,
)
class Game(LegacyBase):
__tablename__ = "games"
id: Mapped[int] = mapped_column("gameID", primary_key=True)
root_forum_id: Mapped[int] = mapped_column("forumID", ForeignKey("forums.forumID"))
root_forum: Mapped["Forum"] = relationship(
"Forum",
back_populates="game",
primaryjoin="Game.root_forum_id == Forum.id",
foreign_keys=[root_forum_id],
remote_side="Forum.id",
uselist=False,
)
group_id: Mapped[int | None] = mapped_column(
"groupID", ForeignKey("forum_groups.groupID"), nullable=True
)
group: Mapped["ForumGroup"] = relationship()
Когда я запускаю свой код, я получаю эту ошибку
Код: Выделить всё
Forum.game and back-reference Game.root_forum are both of the same direction . Did you mean to set remote_side on the many-to-one side ?
Я просмотрел документацию, спросил Gemini и прочитал код, но не могу понять, как устранить ошибку. Он даже просит меня установить Remote_side, что я и сделал, но все равно не работает.
Подробнее здесь:
https://stackoverflow.com/questions/798 ... two-models
1770174146
Anonymous
У меня есть эти две модели (я обрезал лишние поля, чтобы они были читабельными): [code]class Forum(LegacyBase): __tablename__ = "forums" id: Mapped[int] = mapped_column("forumID", primary_key=True) parent_id: Mapped[int] = mapped_column( "parentID", ForeignKey("forums.forumID"), nullable=True ) parent: Mapped["Forum"] = relationship( "Forum", back_populates="children", remote_side="Forum.id" ) children: Mapped[list["Forum"]] = relationship(back_populates="parent") game_id: Mapped[int | None] = mapped_column( "gameID", ForeignKey("games.gameID"), nullable=True ) game: Mapped["Game"] = relationship( "Game", back_populates="root_forum", primaryjoin="Forum.game_id == Game.id", foreign_keys=[game_id], post_update=True, ) class Game(LegacyBase): __tablename__ = "games" id: Mapped[int] = mapped_column("gameID", primary_key=True) root_forum_id: Mapped[int] = mapped_column("forumID", ForeignKey("forums.forumID")) root_forum: Mapped["Forum"] = relationship( "Forum", back_populates="game", primaryjoin="Game.root_forum_id == Forum.id", foreign_keys=[root_forum_id], remote_side="Forum.id", uselist=False, ) group_id: Mapped[int | None] = mapped_column( "groupID", ForeignKey("forum_groups.groupID"), nullable=True ) group: Mapped["ForumGroup"] = relationship() [/code] Когда я запускаю свой код, я получаю эту ошибку [code]Forum.game and back-reference Game.root_forum are both of the same direction . Did you mean to set remote_side on the many-to-one side ? [/code] Я просмотрел документацию, спросил Gemini и прочитал код, но не могу понять, как устранить ошибку. Он даже просит меня установить Remote_side, что я и сделал, но все равно не работает. Подробнее здесь: [url]https://stackoverflow.com/questions/79882413/cannot-resolve-circular-reference-between-two-models[/url]