Как суммировать переменные в модели django

В данном примере у меня есть следующая модель в django:

class Test(models.Model):

    name = models.models.ForeignKey('auth.user')
    amount = models.IntegerField()

in this example i have 4 instances:
test1 = Test("John",10)
test2 = Test("John",20)
test3 = Test("Eric, 30)
test4 = Test("Eric, 40)

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

testlist = (("john", 30), ("Eric", 70))

я попробовал метод aggregate, но тогда я получаю общую сумму всех экземпляров

Вы можете использовать этот код:

all_tests = Test.objects.all()
test_dict = {}
for test in all_test:
    username = test.name.username
    if username in test_dict:
        test_dict[username] += test.amount
    else:
        test_dict[username] = test.amount

потом, если хотите, можете преобразовать dict в нужный вам формат

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