Я использую фреймворк django-rest. У меня есть список клиентов. (клиенты), и у меня есть таблица, в которую я добавляю долги клиентов.
Я хочу сделать отдельный экран запроса и перечислить долги всех клиентов. API / форма списка долгов
у клиента может быть несколько записей о долге. поэтому я хочу показать общую сумму задолженности, общую сумму полученной и оставшейся задолженности каждого клиента в одной строке.
Как я могу это сделать?

Модель клиента
class Customer(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, default=0)
created_userKey = models.UUIDField(editable=False, default=uuid.uuid4)
customerKey = models.UUIDField(editable=False, unique=True, default=uuid.uuid4)
customerName = models.CharField(max_length=20, blank=False)
customerSurname = models.CharField(max_length=20, blank=False)
customerIdentityNo = models.CharField(max_length=11, blank=False) # , unique=True)
customerGender = models.CharField(max_length=1, choices=(('M', 'Male'), ('F', 'Female')))
customerPhone = models.CharField(max_length=12, blank=False)
customerBirth = models.DateField(blank=True)
customerDescription = models.TextField(blank=True, max_length=100)
customerStatus = models.BooleanField(default=False, blank=True)
createdDate = models.DateTimeField(editable=False)
modifiedDate = models.DateTimeField(editable=False, null=True)
modifiedByUser = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name='modifiedBy')
Debt.py
class Debt(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, default=0,
blank=False)
customer = models.ForeignKey(Customer, on_delete=models.CASCADE, blank=False,
related_name='customer')
debtKey = models.UUIDField(editable=False, default=uuid.uuid4,
blank=False)
createduserKey = models.UUIDField(editable=False,
default=uuid.uuid4)
totalDebt = models.DecimalField(max_digits=8, decimal_places=2)
receivedAmount = models.DecimalField(max_digits=8, decimal_places=2)
paymentDate = models.DateField(blank=True)
description = models.CharField(max_length=100, blank=True)
createdDate = models.DateTimeField(auto_now=True, editable=False)
modifiedDate = models.DateTimeField(auto_now=True)
Views.py
class DebtListAPIView(ListAPIView):
serializer_class = DebtCreateSerializer
def get_queryset(self):
result = Debt.objects.values('customer__customerKey').annotate(Sum('totalDebt'), Sum('receivedAmount'))
return result
Сериализатор
class DebtCreateSerializer(serializers.ModelSerializer):
class Meta:
model = Debt
fields = [
'id',
'user',
'customer',
'debtKey',
'createduserKey',
'totalDebt',
'receivedAmount',
'paymentDate',
'description',
'createdDate'
]