Получить два типа множеств из модели с условием

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

class SupplierTrans(models.Model):
    supplierName = models.ForeignKey(Supplier, on_delete = models.CASCADE)
    paid = models.BooleanField(default=True)
    amount = models.IntegerField()
    remarks = models.CharField(max_length = 200)
    created = models.DateTimeField(auto_now_add=True)
    update = models.DateTimeField(auto_now=True)

    class Meta:
        ordering = ['-update', '-created']

    def __str__(self):
        return str(self.supplierName)
    
    @property
    def paid_purchsased(self):
        return 'Paid' if self.paid == True else "Purchased"

Я приближаюсь в метосе, который есть

sup = SupplierTrans.objects.annotate( credit = Sum('amount', paid=True), debit= Sum('amount', paid=False)).order_by('supplierName__name')

но он не работает выход это получить все суммы в таблице если не фильтровать булевые значения

но требуемое получается следующим методом

credit_amt = SupplierTrans.objects.filter(paid=True).aggregate(Sum('amount'))
debit_amt = SupplierTrans.objects.filter(paid=False).aggregate(Sum('amount'))

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

Я понимаю, что вы хотите получить итоговые значения для оплаченных и неоплаченных записей. Следующий запрос должен выполнить эту работу:

SupplierTrans.objects.values('paid').annotate(total_amount=Sum('amount'))

Связанные документы django - https://docs.djangoproject.com/en/4.0/topics/db/aggregation/#values

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