Как суммировать числа для модели внешнего ключа в djnago

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

model.py

class Award(models.Model):
    Admin = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    image = models.ImageField(upload_to='award_images')
    slug = models.SlugField(max_length=150)
    about_the_award = models.TextField(blank=True, null=True)
    price = models.CharField(max_length=20, choices=PRICE, default='0.5')
    amount = models.DecimalField(default=0.0, max_digits=19, decimal_places=2)
    date = models.DateTimeField(auto_now_add=True)

class Category(models.Model):
    Award = models.ForeignKey(Award, on_delete=models.CASCADE)
    category = models.CharField(max_length=100,)
    slug = models.SlugField(max_length=150)
    date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.category


class Nomination(models.Model):
    Fullname = models.CharField(max_length=120)
    Nominee_ID = models.CharField(max_length=100)
    Category = models.ForeignKey(Category, on_delete=models.CASCADE)
    image = models.ImageField(upload_to='nominations_images')
    slug = models.SlugField(max_length=150)
    votes = models.IntegerField(default=0)
    date = models.DateTimeField(auto_now_add=True)


View.py

@method_decorator([login_required], name='dispatch')
class DashboardView(TemplateView):
    template_name = 'admin/Dashboard.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['user_awards'] = Award.objects.filter(Admin=self.request.user).order_by('-date')
        context['number_of_votes'] = Award.objects.filter(Admin=self.request.user, self.catgory.nomination).annotate(Sum('amount'))
        return context



from django.db.models import Sum

total_votes = Nomination.objects.filter(category__award=your_award).aggregate(total_votes=Sum('votes'))['total_votes']

Примечание: хорошей практикой является то, что имена ваших полей начинаются со строчной буквы.

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