Как использовать group by в django с TruncDay

Я пытаюсь показать прибыль и убытки компании, используя группировку по каждому дню, вот что я пробовал :

class InvoiceItem(models.Model):
    item = models.ForeignKey(Item,on_delete=models.CASCADE)
    invoice = models.ForeignKey(CustomerInvoice,on_delete=models.CASCADE)
    quantity = models.IntegerField)
    price = models.DecimalField(max_digits=20,decimal_places=2)
    created_at = models.DateTimeField(auto_now_add=True)

class Item(models.Model):
    item = models.ForeignKey(Information,on_delete=models.CASCADE)
    quantity = models.IntegerField()
    buying_price = models.DecimalField(max_digits=30,decimal_places=2)
    cost = models.DecimalField(max_digits=30,decimal_places=2,blank=True,null=True)

Мне нужно показать дневную прибыль с дневным убытком, что-то вроде этого

общая_цена = 1000, общая_основная_цена = 900, прибыль = 100 но если мы продали что-то, например, основная_цена 100, но мы продаем это за 90, то наша прибыль изменится на 90, и у нас не будет убытка, потому что у нас все еще есть прибыль, но я хочу также показать убыток, даже если у нас есть прибыль в большинстве счетов, но в одном счете у нас есть убыток, я должен показать убыток этого счета!

я не хочу показывать среднее значение, я просто хочу показать суммирование счетов-фактур с прибылью и счетов-фактур с убытками отдельно

class DailyInvoiceIncomeView(LoginRequiredMixin,ListView):
    template_name = 'invoiceapp/dmyincomes/dailyinvoice.html'
    model = InvoiceItem
    def get_queryset(self):
        return InvoiceItem.objects.annotate(day=TruncDay('created_at')).values('day').annotate(
        paid_price=Sum(
            (F('price') * F('quantity')) - F('discount'),output_field=DecimalField(max_digits=20,decimal_places=3)),
        storage_price=Sum(
            (F('item__buying_price')+F('item__cost')) * F('quantity'),output_field=DecimalField(max_digits=20,decimal_places=3)),                
        income=Case(
            When(paid_price__gte=F('storage_price'),then=F('paid_price')-F('storage_price')),default=0,output_field=DecimalField(max_digits=20,decimal_places=3)),
    ).annotate(
        loss=Case(
            When(
                storage_price__gt=F('paid_price'),then=F('storage_price') - F('paid_price')),default=0,output_field=DecimalField(max_digits=20,decimal_places=3)),
    ).annotate(
        total_quantity=(
            Sum('quantity')
        )
    ).order_by('-day')

пожалуйста, есть ли возможность узнать всю информацию, прибыль и убыток? Он показывает среднее количество продаж в течение дня, затем вычисляет все вместе, но я хочу показать прибыль по счетам, если у вас есть прибыль в счетах и показать убыток по счетам, которые мы имели отдельно. заранее спасибо

Вернуться на верх