2013-02-03 44 views
1

我想从外键找到一个集合的最小/最大值。我知道你可以用func.minfunc.maxsession.query,但是有没有办法让我使用标准的ORM关系?最小/最大与orm的关系

例如有博客,如果我想找到给定的帖子中最大的“数字评论”给出下面的架构,是否有可能做类似Post.query.get(0).number_comments.max()

class Post(base): 
    id = Column(Integer, primary_key=True) 
    number_comments = relationship("NumberComment") 

class NumberComment(base): 
    id = Column(Integer, primary_key=True) 
    num = Column(Integer, nullable=False) 

回答

1

如使用原始SQL的情况下,你需要加入这些表中查询:

# This class lacks a foreign key in your example. 
class NumberComment(base): 
    # ... 
    post_id = Column(Integer, ForeignKey(Post.id), nullable=False) 
    # ... 

session.query(func.max(NumberComment.num)).join(Post).\ 
    filter(Post.id == 1).scalar() 

有没有其他办法可以做到这一点,至少不会像你想要的。有一个原因,为什么SQLAlchemy被称为像那样,而不是ORMSorcery ;-)

我的建议是想想在SQL方面试图想出一个查询,这将帮助你很多。