在Django中按外键分组为
问题描述:
我有一个模型,其中有一个ForeignKey
和IntegerField
。在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'))
如果可能的话?
答
您的第二个选项无效,因为您需要在查询值之前过滤查询集并指定要调用的注释。至于将外键作为布尔值来处理,您正在寻找isnull
。所以,你喜欢的东西结束:
c = Model.objects.filter(parent__isnull=False).values().annotate(amount_sum=Sum('amount'))