私は、具体化されたパス (レベルごとに 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 は受け入れられません。