sqlalchemy子字段顺序\u by on backref
答案不再需要,因为我在代码中改变了重点。(见我在回答中的评论)发布答案供将来参考 如何从由子字段排序的一对多backref中检索结果?我需要按索引排序的gid的所有内容。但此时,它们会被随机检索,即使它们是在ms sql server中排序的 我在TurboGears 2 datamodels.py中有: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'
`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崩溃外,我还对其他正常工作的关系进行了查询。单个查询似乎运行得更快,并防止了崩溃。谢谢你的回复。