Django сложение столбца manytomany

Всем привет!

class Purchases_item(models.Model):
    product = models.ForeignKey(Products, on_delete=models.CASCADE, verbose_name='Товар')
    quantity = models.PositiveIntegerField(default=0, verbose_name='Кол-во')
    price = models.DecimalField(max_digits=150, default=0, decimal_places=0, verbose_name='Цена себестоимости')
    total = models.DecimalField(max_digits=150, default=0, decimal_places=0, verbose_name='Общая сумма')
    
    def __str__(self):
        return str(self.product)

    def save(self, *args, **kwargs):
        super(Purchases_item, self).save(*args, **kwargs)
        if not self.total:
            self.total = self.price * self.quantity
            self.save()

    class Meta:
        ordering = ('product', 'price', 'total')
        verbose_name = 'Покупка по позициям'
        verbose_name_plural = 'Покупки по позициям'

class Purchases(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    date = models.DateField(auto_now_add=True, verbose_name='Дата')
    company = models.CharField(max_length=150, verbose_name='Компания', null=True, blank=True, default=None)
    product = models.ManyToManyField(Purchases_item, verbose_name='Товар(ы)')
    total_price = models.DecimalField(max_digits=150, decimal_places=0, verbose_name='Общая сумма')
    
    def __str__(self):
        return self.company

    def save(self, *args, **kwargs):
        Ниже приведу пример как я пытался записать и решить этот вопрос

    # def delete(self, *args, **kwargs):
    #     super(Purchases, self).delete(*args, **kwargs)
    #     if self.quantity == 0:
    #         self.delete()
    
    class Meta:
        ordering = ('date', 'company', 'total_price')
        verbose_name = 'Покупка список'
        verbose_name_plural = 'Покупки список'

Есть две модели Purchases_item и Purchases, в первую Purchases_item я записываю товар который купили (название товара записано в таблицы с name), его количество цену себестоимости и общую сумму, в Purchases я записываю список купленного товара, там учитывается User который совершил закупку, дату, компанию которая продала этот товар, товар который закупили и его общую сумму.

Вообщем все идет через список покупки то есть модель Purchases

Мне нужно чтобы можно было записать общую сумму путем сложение total из таблицы Purchases_item которая в Purchases как ManyToManyField Как я пытался решить:

    def save(self, *args, **kwargs):
        super(Purchases, self).save()
        if not self.total_price:
            self.total_price = self.product.all().aggregate(Sum('total'))
            self.save()
        elif self.total_price == 0:
           self.total_price = self.product.all().aggregate(Sum('total'))
           self.save()

Ошибку которую мне выйдет:

["“{'total__sum': None}” value must be a decimal number."]

Решил это

def save(self, *args, **kwargs):
    super(Purchases, self).save()
    if not self.total_price:
        self.total_price = sum(product.total_price for product in self.product.all())
        self.save()
    elif self.total_price == 0:
        self.total_price = sum(product.total_price for product in self.product.all())
        self.save()
    elif self.total_price != sum(product.total_price for product in self.product.all()):
        self.total_price = sum(product.total_price for product in self.product.all())
        self.save() 
Вернуться на верх