这是对上一个问题的跟进。我想计算每个类别中的 offer 数量,并以我可以在 Jinja 中迭代的格式输出它们。
新的,3
旧的,7
坏的,5
这是我现在所拥有的:
class Offer(Base):
CATEGORIES = [
(u'new', u'New'),
(u'used', u'Used'),
(u'broken', u'Broken')
]
__tablename__ = 'offers'
id = sa.Column(sa.Integer, primary_key=True)
summary = sa.Column(sa.Unicode(255))
category = sa.Column(ChoiceType(CATEGORIES))
按照上一个答案,我尝试了这样的事情:
count_categories = db.session.query(
CATEGORIES.value, func.count(Offer.id)).outerjoin(
Offer).group_by(CATEGORIES.key).all()
这显然行不通,因为CATEGORIES.value
没有定义;如何传递CATEGORIES
给此查询以产生所需的结果?“设置”似乎相当普遍,直接取自SQLAlchemy-Utils 数据类型页面
非常感谢您的帮助(已经长出白头发了)!
一个可怕但有效的临时解决方法:
result = []
for category in Offer.CATEGORIES:
count = db.session.query(func.count(Offer.id)).filter_by(category=category[0]).all()
result.append((category[0], category[1], count[0][0]))