可以使用模型中的属性进行订购吗
class PlayerModel(Base):
__tablename__ = 'players'
alliances_id = Column(Integer, ForeignKey('alliances.id'), nullable=True)
alliance = relationship('AllianceModel')
username = Column(String(30), nullable=False)
wins = Column(Integer, default=0, nullable=False)
defeats = Column(Integer, default=0, nullable=False)
@property
def score(self):
number = self.wins + self.defeats
if number:
return self.wins / number
return 0
质疑
`for player in session.query(PlayerModel).order_by(PlayerModel.wins+PlayerModel.defeats):`
它能用,但当我把
session.query(PlayerModel).order_by(PlayerModel.wins+PlayerModel.score):`
除SQL字符串外,它报告错误。是否可以在desc中按属性排序? (我可以在应用程序级别加载所有数据并进行排序,但如果有很多记录,这是不好的。其他肮脏的解决方案是将分数归档并触发,但使用顺序和属性似乎更优雅,这是可能的吗?)
是的,您需要使用名为hybrid attributes的功能。表达式需要用Python逻辑和SQL表达式逻辑来表示:
相关问题 更多 >
编程相关推荐