我有一个带有2个相关模型PageScoreHistory和PageImageHistory的模型页面,其中两个历史模型都将页面字段作为ForeignKey to Page并具有日期字段。我遇到的问题是,当我得到一个PageImageHistory QuerySet列表时,我希望能够检索页面在拍摄图像时得到的分数。对于单个PageImageHistory对象,我可以轻松地执行此操作:
pih = PageImageHistory.objects.get(id=123)
score = pih.page.pagescorehistory_set.filter(datetime__lte=pih.captured).latest('datetime')
但对于QuerySet,我想避免为该集的每个成员运行查询。有没有一个方法来做到这一点是一个理智的时尚,没有实际循环通过集合的所有成员?
答案 0 :(得分:1)
没有看到你的模型很难,但是这样做你想要的吗?
PageImageHistory.objects.filter(
page__pagescorehistory__datetime__lte=x.captured
).annotate(Max('page__pagescorehistory__datetime')