Django中的注释和.get()

Django中的注释和.get(),django,python-3.x,django-models,django-views,Django,Python 3.x,Django Models,Django Views,在我的数据库中,我有一张表卡链接到一个表金额,一张卡可以有很多金额 因此,对于django,我尝试获得一张特定的卡,并将所有链接金额的总和相加。但不可能将.get和.annotation连接在一起 我试过这个: last_year_amount = Card.objects.get(date__date=date(today.year - 1, today.month, today.day)).annotate(total=Sum(Amount.amount)) 但它当然会引

在我的数据库中,我有一张表卡链接到一个表金额,一张卡可以有很多金额

因此,对于django,我尝试获得一张特定的卡,并将所有链接金额的总和相加。但不可能将.get和.annotation连接在一起

我试过这个:

    last_year_amount = Card.objects.get(date__date=date(today.year - 1, 
    today.month, today.day)).annotate(total=Sum(Amount.amount))
但它当然会引发一个错误卡“objecthasnoattribute”注释。 我理解。get返回一个对象,而不是QuerySet,因此。annotate不作为此对象的方法存在

但是如何使用注释获取该对象呢

感谢您的回答

交换注释和获取的顺序

你也可以使用过滤器


如果queryset不完全包含一项,则不带参数的最终get将引发异常。

我尝试过,但出现了另一个错误

最后,我在Amount.Amount和get格式中出现了一个错误

解决办法是:

    last_year_amount = Card.objects.filter(date__date=date(today.year - 1, today.month, today.day)).annotate(total=Sum('amount__amount'))[:1].get()

这很好用

按相反的顺序进行怎么样:

Amount.objects.filter(card__date__date=date(today.year - 1, today.month, today.day)).values('card').annotate(total=Sum('amount'))
我假设Amount模型有一个外键到Card模型,字段名为Card

    last_year_amount = Card.objects.filter(date__date=date(today.year - 1, today.month, today.day)).annotate(total=Sum('amount__amount'))[:1].get()
Amount.objects.filter(card__date__date=date(today.year - 1, today.month, today.day)).values('card').annotate(total=Sum('amount'))