我有 3 个看起来像这样的模型(简化):
用户:
id
username
资源:
id
name
description
评论:
id
user_id (relationship User)
resource_id (relationship Resource)
data
date_created
我正在尝试查询用户的评论并按资源对其进行分组。我希望结果返回为:[(Resource A, [Comment, Comment, Comment, ...]), (Resource B, [Comment, Comment, ...]), (Resource X, [Comment ])]
我已经尝试了各种构建它的方法,但我似乎无法弄清楚。做这样的事情的正确方法是什么?
编辑
现在代码如下所示:
contrib = db_session.query(Resource).filter(Comment.user==user, Resource.uuid==Comment.resource_id).distinct(Comment.resource_id).order_by(desc(Comment.date_created))
comments = db_session.query(Comment, Resource).filter(Comment.user==user, Comment.resource_id.in_([r.uuid for r in contrib]), Resource.uuid==Comment.resource_id).order_by(desc(Comment.date_created))
然后我使用一些列表/字典理解将这些结果组合成看起来像的东西
[{resource: Resource, comments:[Comment, Comment, Comment]}, {resource: Resource, comments:[Comment, .....]}, .....]
必须有更好的方法来做到这一点!