我不再需要回答,因为我在代码中改变了焦点。 (请参阅我在回答中的评论)发布未来参考的答案...
如何从孩子中的字段排序的一对多backref中检索结果?我需要所有的东西为索引订购的gid。但此时它们是随机检索的,即使它们是在ms sql server中订购的。
我在TurboGears 2中有datamodels.py:
`class Parcel(DeclarativeBase):
__tablename__ = 'GENERAL'
__table_args__ = ({'autoload': True})
gid = Column(Integer, primary_key=True)`
somethings = relationship('Something', backref='Parcel')
'class Something(DeclarativeBase):
__tablename__ = 'SKETCH'
__table_args__ = ({'autoload': True})
gid = Column(Integer, ForeignKey('GENERAL.gid'), primary_key=True)
index = Column(Integer, primary_key=True)
在Turbogears中root.py:
query = DBSession.query(Parcel)
query = query.options(joinedload('somethings')
query=session.filter(Parcel.gid==gid)
返回gid无序的所有事情。
答案 0 :(得分:1)
DBSession.query(Something).filter_by(gid=gid).order_by(Something.index).all()
修改 relationship()
accepts a keyword argument order_by
以便在您使用关系时订购实例。如果您想指定反方向的排序,可以使用backref()
function代替backref关键字,并使用与order_by
相同的relationship()
关键字参数。