我正在大量使用 subqueryload/subqueryload_all,并且遇到了边缘情况,我倾向于非常明确地定义在 subqueryload 期间使用的查询。例如,我有一个帖子和评论的情况。我的查询看起来像这样:
posts_q = db.query(Post).options(subqueryload(Post.comments))
如您所见,我正在加载每个帖子的评论。问题是我不想要所有帖子的评论,我还需要考虑一个已删除的字段,并且它们需要按创建时间降序排列。我观察到这样做的唯一方法是relationship()
在帖子和评论之间的声明中添加选项。我不希望这样做,b/c 这意味着在那之后不能在任何地方重用这种关系,因为我在应用程序中的其他地方可能不适用这些约束。
我想做的是明确定义 subqueryload/subqueryload_all 用来加载帖子评论的查询。我在这里读到了 DisjointedEagerLoading ,看起来我可以简单地定义一个特殊的函数来接收基本查询,以及一个加载指定关系的查询。这是解决这种情况的好方法吗?以前有人遇到过这种边缘情况吗?