以下是模型:class User(Base): __tablename__ = 'users' id = Column(CHAR, primary_key=True) first_name = Column(CHAR) last_name = Column(CHAR) email = Column(CHAR) receive_reports = Column(Boolean)class MailPiece(Base): __tablename__ = 'mail_pieces' id = Column(CHAR, primary_key=True) created_at = Column(DateTime) template_id = Column(CHAR, ForeignKey('templates.id'))class Template(Base): __tablename__ = 'templates' id = Column(CHAR, primary_key=True) name = Column(CHAR) created_by_id = Column(CHAR, ForeignKey('users.id')) user = relationship(User, backref='templates')我想向用户发送报告:他们发送了哪些模板以及为每个模板发送了多少邮件。我写的代码: stmt = self.session.query(MailPiece.template_id, func.count('*') .label('mail_pieces_count')).filter( MailPiece.created_at > day_ago, MailPiece.created_at < now, ).group_by(MailPiece.template_id).subquery() query = self.session.query(Template, stmt.c.mail_pieces_count).\ filter(Template.user.has(receive_reports=True)).\ join(stmt, Template.id == stmt.c.template_id)但这有点不是我想要的。我得到了按模板分组的结果,但需要按用户分组的列表,每个用户都有模板。因此,通过这种方式,我可以遍历用户列表并向每个用户发送带有摘要的报告。当前结果:[<Template(id='123', name='Test', mail_pieces_count='123', user=<User(id=1212, first_name='Some name', last_name='Some lastname')>)>, <Template(id='456', name='Test2', mail_pieces_count='456', user=<User(id=1212, first_name='Some name', last_name='Some lastname')>)>]预期结果:[<User(id=1212, first_name='Some name', last_name='Some lastname, templates=[<Template(id='123', name='Test', mail_pieces_count='123')>, <Template(id='456', name='Test2', mail_pieces_count='456')>,])>]
添加回答
举报
0/150
提交
取消