У меня есть модель Case, скажем так:
class Case(Base):
__tablename__ = "cases"
id = db.Column("id", db.Integer, primary_key=True)
Модель пива, например:
class Beer(Base):
__tablename__ = "beers"
id = db.Column("id", db.Integer, primary_key=True)
case_id = db.Column(
"case_id", db.Integer, db.ForeignKey("cases.id"), nullable=False, index=True
)
И модель Soda, вот так:
class Soda(Base):
__tablename__ = "sodas"
id = db.Column("id", db.Integer, primary_key=True)
case_id = db.Column(
"case_id", db.Integer, db.ForeignKey("cases.id"), nullable=False, index=True
)
Объекты Soda или Beer обязательно принадлежат Case. Так что дело в иерархически выше, чем сода или пиво. Сода и пиво в любом случае не связаны. Сода и пиво могут принадлежать к одному и тому же делу.
Я бы хотел, чтобы в каждом случае было подсчитано количество пива и колы.
Я пробовал что-то вроде этого:
all_nbr = session.query(Case, func.count(Beer.id), func.count(Coke.id)).join(Beer, Coke).group_by(Case.id)
Но это не работает (я думаю, что это дает мне только количество пива).
У вас есть идеи?