sqlalchemy子字段顺序\u by on backref

sqlalchemy子字段顺序\u by on backref,sqlalchemy,sql-order-by,relationship,turbogears2,Sqlalchemy,Sql Order By,Relationship,Turbogears2,答案不再需要,因为我在代码中改变了重点。(见我在回答中的评论)发布答案供将来参考 如何从由子字段排序的一对多backref中检索结果?我需要按索引排序的gid的所有内容。但此时,它们会被随机检索,即使它们是在ms sql server中排序的 我在TurboGears 2 datamodels.py中有: `class Parcel(DeclarativeBase): __tablename__ = 'GENERAL' __table_args__ = ({'autoload'

答案不再需要,因为我在代码中改变了重点。(见我在回答中的评论)发布答案供将来参考

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

DBSession.query(Something)。筛选依据(gid=gid)。排序依据(Something.index)。all()

编辑:
关系()
在使用关系时对实例进行排序。如果要指定反向的顺序,可以使用而不是backref关键字,并使用与
relationship()
相同的
order\u by
关键字参数作为
relationship()

DBSession.query(Something).filter\u by(gid=gid).order\u by(Something.index).all()


编辑:
关系()
在使用关系时对实例进行排序。如果要指定反向的顺序,可以使用而不是backref关键字,并使用与
relationship()

相同的
order\u by
关键字参数,但它不再用作backref,而是成为单独的查询,需要添加到上下文dict或地块查询中。我正在寻找一种方法来订购已添加到地块查询的backref。除了它自己的查询之外,可能没有一种简单的方法来完成它。我从未能够按子对象上的字段排序。backref根据父项的字段对子项排序。我也无法让backref=backref()正常工作。我最后做了单独的查询……除了太多的信息导致turbogears崩溃外,我还对其他正常工作的关系进行了查询。单个查询似乎运行得更快,并防止了崩溃。感谢您的回复。但是,它不再用作backref,而是成为一个单独的查询,需要添加到上下文dict或Parcel查询中。我正在寻找一种方法来订购已添加到地块查询的backref。除了它自己的查询之外,可能没有一种简单的方法来完成它。我从未能够按子对象上的字段排序。backref根据父项的字段对子项排序。我也无法让backref=backref()正常工作。我最后做了单独的查询……除了太多的信息导致turbogears崩溃外,我还对其他正常工作的关系进行了查询。单个查询似乎运行得更快,并防止了崩溃。谢谢你的回复。