我已经做到了:
groups = group1.objects.filter(User=request.user, Company=company_details.pk, ledgergroups__Creation_Date__gte=selectdatefield_details.Start_Date, ledgergroups__Creation_Date__lte=selectdatefield_details.End_Date).exclude(group_Name__icontains='Capital A/c')
groups_cb = groups.annotate(
closing = Coalesce(Sum('ledgergroups__Closing_balance'), 0),
opening = Coalesce(Sum('ledgergroups__Balance_opening'), 0),
)
我想通过交换注释的负值来在“关闭”和“打开”中进行汇总...
我的意思是负值,它将通过“关闭”中的注释出现,该值应与“打开”的汇总值相加。...
例如:
如果close的值是2500,5000,-8000 总价值为7500(总价值)
和-8000将被添加到'opening'的合计值中。
有人知道如何解决吗?
答案 0 :(得分:1)
您可以在Sum
批注中使用Case
and When
:
Sum(
Case(
When(
another_model__field_value__lt=0,
then=F('another_model__field_value'),
),
default=F('another_model__other_field_value'),
output_field=IntegerField(),
)
)