使用嵌套值为SQLAlchemy关系排序
根据这些关系:
A.children = [B...]
B.type = C
C.order = int
我该如何指定.children
关系的顺序,以便按照B.type.order
来排序呢?
class A(Base):
id = Column(Integer, primary_key=True)
children = relationship(lambda: B, order_by=lambda: B.type.order)
# ^^^^^^^^^^^^^^^^^^^^
# this doesn't work
class B(Base):
C_id = Column(Integer, ForeignKey(C.id), primary_key=True)
A_id = Column(Integer, ForeignKey(A.id), primary_key=True)
type = relationship(lambda: C)
class C(Base):
id = Column(Integer, primary_key=True)
order = Column(Integer)
结果给我:
AttributeError: 与
B.type
相关的'InstrumentedAttribute'对象或'Comparator'对象都没有'order'这个属性
1 个回答
0
这看起来应该是可以工作的:
class A(Base):
id = Column(Integer, primary_key=True)
children = relationship(lambda: B, order_by=lambda: B._order)
class B(Base):
C_id = Column(Integer, ForeignKey(C.id), primary_key=True)
A_id = Column(Integer, ForeignKey(A.id), primary_key=True)
type = relationship(lambda: C)
_order = column_property(select([C.order]).where(C.id == C_id))
class C(Base):
id = Column(Integer, primary_key=True)
order = Column(Integer)