使用相关表中的值注释django QuerySet

时间:2010-09-28 20:30:46

标签: django django-models

我有一个带有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,我想避免为该集的每个成员运行查询。有没有一个方法来做到这一点是一个理智的时尚,没有实际循环通过集合的所有成员?

1 个答案:

答案 0 :(得分:1)

没有看到你的模型很难,但是这样做你想要的吗?

PageImageHistory.objects.filter(
    page__pagescorehistory__datetime__lte=x.captured
).annotate(Max('page__pagescorehistory__datetime')