我有一个模型,其中有ForeignKey
和IntegerField
。
我想对由外键分组的整数字段求和,但外键可以有很多值。我只想知道外键是否具有“实际价值”或者没有。因此,外键应该被解释为布尔值。
我可以提出两个问题:
a = Model.objects.filter(parent=None).aggregate(Sum('amount'))
b = Model.objects.exclude(parent=None).aggregate(Sum('amount'))
但是,制作类似
的内存要求不高c = Model.objects.values('parent__as_bool').annotate(Sum('amount'))
如果有可能吗?
答案 0 :(得分:0)
您的第二个选项无效,因为您需要在询问值之前过滤查询集,并指定您调用注释的内容。至于将外键作为布尔值处理,您需要查找isnull
。所以你最终得到的结论是:
c = Model.objects.filter(parent__isnull=False).values().annotate(amount_sum=Sum('amount'))
答案 1 :(得分:0)