1

由于我改变了代码的重点,因此不再需要答案。(请参阅我在回答中的评论)发布答案以供将来参考...

如何从子字段排序的一对多反向引用中检索结果?我需要按索引排序的 gid 的所有东西。但是此时它们是随机检索的,即使它们是在 ms sql 服务器中排序的。

我在 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 无序的所有内容。

4

1 回答 1

1

DBSession.query(Something).filter_by(gid=gid).order_by(Something.index).all()

编辑: 当您使用关系时,relationship() 接受关键字参数来订购实例。order_by如果要指定反向的顺序,可以使用backref()函数代替 backref 关键字,并使用与order_bywith 相同的关键字参数relationship()

于 2012-10-18T20:31:15.833 回答