Это продолжение предыдущего вопроса здесь .Я хотел бы подсчитать количество предложений в каждой категории и вывести их в формате, который я могу повторять в Jinja.
new, 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]))