【发布时间】:2012-12-28 18:43:54
【问题描述】:
可以使用模型中的属性进行排序吗?
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):`
它可以工作,但是当我输入时 id 不起作用
session.query(PlayerModel).order_by(PlayerModel.wins+PlayerModel.score):`
它报告错误期望 SQL 字符串。是否可以按 desc 中的属性排序? (我可以加载所有并在应用程序级别进行排序,但如果有很多记录,那就不好了。其他肮脏的解决方案是有分数和触发器,但是顺序和属性似乎更优雅,可能吗?)
【问题讨论】:
标签: python sqlalchemy