как взять сумму каждого ObjectList, DJANGO - PullRequest
0 голосов
/ 01 апреля 2020

спасибо за ваше время:

Я пытаюсь получить сумму всех домашних животных, разделенных людьми:

models.py:

class People(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='person')
    birthday = models.DateField()
    cpf = models.CharField(max_length=11, validators=[RegexValidator(r'^\d{1,10}$')])

    def __str__(self):
        return '%s' % (self.user)


class Pets(models.Model):
    pessoa = models.ForeignKey(People, on_delete=models.CASCADE, related_name='peop')
    nome = models.CharField(max_length=150)
    custo = models.DecimalField(max_digits=7, decimal_places=2)
    tipo = models.SmallIntegerField()

    def __str__(self):
        return '%s - %s' % (self.pessoa, self.nome)

views.py

    q7 = People.objects.all()
    for p in q7:
        q8 = Pets.objects.filter(pessoa=p)
        l=[]
        for pet in q8:
            custa = pet.custo
            l.append(custa)
            custo_total2 = sum(l)

это возвращает мне только сумму последнего запроса People.Pets, я думаю, я не понимаю логику c

1 Ответ

1 голос
/ 01 апреля 2020

Используйте Group By запрос как,

from django.db.models import Sum

Pets.objects.values('pessoa').annotate(sum=Sum('custo'))
...