Django查询:使用FK对模型实例计算对象数

Django查询:使用FK对模型实例计算对象数,django,orm,count,foreign-keys,Django,Orm,Count,Foreign Keys,这应该很容易,但由于某种原因,我很难找到它。我有以下资料: App(models.Model): ... Release(models.Model): date = models.DateTimeField() App = models.ForeignKey(App) ... 如何查询至少有一个版本的所有应用程序对象 我开始打字: App.objects.all().annotate(release_count=Count('??????')).filter(

这应该很容易,但由于某种原因,我很难找到它。我有以下资料:

App(models.Model):
    ...

Release(models.Model):
    date = models.DateTimeField()
    App = models.ForeignKey(App)
    ...
如何查询至少有一个版本的所有应用程序对象

我开始打字:

App.objects.all().annotate(release_count=Count('??????')).filter(release_count__gt=0)
这是行不通的,因为Count并没有跨越人际关系,至少据我所知

奖金:

最后,我还希望能够按最新发布日期对应用程序进行排序。我正在考虑在应用程序中缓存最新的发布日期,使其更容易(更便宜),并在发布模型的
save
方法中更新它,当然,除非有更好的方法

编辑:


我使用的是Django1.1——如果有令人信服的理由,我并不反对在预期1.2的情况下迁移到dev

您应该能够使用:

App.objects.annotate(release_count=Count('release')).filter(release_count__gt=0)\
    .order_by('-release__date')

对于奖金部分,对日期字段进行非规范化似乎是目前唯一的解决方案。而且速度也相当快。

在发布日期之前订购非常简单,无需进行非规范化。看我的答案。嗯,这正是我要做的,但我确信它不会起作用,所以我从未在口译员中尝试过。
App.objects \
    .annotate(release_count=Count('release')) \
    .(release_count__gt=0) \
    .order_by('-release_count')