2014-08-28 20 views
1

我有一个模型,其中有一个ForeignKeyIntegerField在Django中按外键分组为

我想总结由外键分组的整数字段,但外键可以有很多值。我只想知道外键是“真实值”还是没有。所以外键应该被解释为布尔值。

我可以做两个查询:

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

您的第二个选项无效,因为您需要在查询值之前过滤查询集并指定要调用的注释。至于将外键作为布尔值来处理,您正在寻找isnull。所以,你喜欢的东西结束:

c = Model.objects.filter(parent__isnull=False).values().annotate(amount_sum=Sum('amount'))