在backref上的sqlalchemy子字段order_by

时间:2012-10-18 17:17:24

标签: sqlalchemy sql-order-by relationship turbogears2

我不再需要回答,因为我在代码中改变了焦点。 (请参阅我在回答中的评论)发布未来参考的答案...

如何从孩子中的字段排序的一对多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无序的所有事情。

1 个答案:

答案 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()关键字参数。