1

私は、具体化されたパス (レベルごとに 1 文字) を使用して階層が維持される階層カテゴリ モデルを持っています。

class Category(Base):
    __tablename__ = 'categories'

    id = Column(SmallInteger, primary_key=True)
    path = Column(String, unique=True, nullable=False)

    # problematic relationship
    all_subcats = relationship('Category', lazy='dynamic', viewonly=True,
                               primaryjoin=foreign(path).like(remote(path).concat('%')))

「すべてのサブカテゴリ」の関係を定義しようとすると、問題が発生します。

sqlalchemy.exc.ArgumentError: Can't determine relationship direction for
relationship 'Category.all_subcats' - foreign key columns within the join
condition are present in both the parent and the child's mapped tables.
Ensure that only those columns referring to a parent column are marked as
foreign, either via the foreign() annotation or via the foreign_keys argument.

同じ列に参加しているため、SQLAlchemy は混乱しています。私が見つけたすべての例は、常に異なる列に結合しています。

この種の関係はまったく可能ですか?この結合を介してクエリを実行したいので、カスタム @property は受け入れられません。

4

1 に答える 1