django - 在后续注释中使用注释的结果

the*_*dev 5 python django annotate

我有以下模型结构:

Model A:
    [no question-relevant fields]

Model B:
    linked_to = ForeignKey(A, related_name='involved')
    date = DateField()
    amount = IntegerField()
Run Code Online (Sandbox Code Playgroud)

我想要做的是为每个对象 A 获取所有相关的模型 B,从这个子集中按日期获取最新的模型,然后计算具有相同日期和相同连接的 A 对象的所有模型 B 的总和。

现在我正在使用这个查询:

A.objects.all().annotate(latest_date=Max('involved__date'))
Run Code Online (Sandbox Code Playgroud)

这将为每个 A 对象返回正确的最新日期,接下来我正在尝试:

A.objects.all().annotate(latest_date=Max('involved__date')).annotate(total=Sum(Case(When(involved__date=F('latest_date'), then='involved__amount'))))
Run Code Online (Sandbox Code Playgroud)

但我得到了一个

AttributeError: 'Case' object has no attribute 'name'.

我以前使用过多个注释,没有任何问题,不同之处在于,过去我总是使用来自现有字段的先前注释值,而不是最大值/最小值,所以我不确定这是否有所不同。

Django 版本是 1.8

我不能在这里使用任何原始 SQL,我知道这可以通过 2 个步骤轻松完成,但在这一点上,更多的是个人对了解其工作原理的好奇心。