Django: Вычисление количества товара

Нужно автоматически рассчитать сумму заказа, переопределил функцию сохранения, но ругается на отсутствие id.

необходимо иметь значение для поля "id", прежде чем можно будет использовать это отношение "многие-ко-многим". class Pizza(models.Model):

title = models.CharField(verbose_name='Название пиццы', max_length=100)
technology_card = models.ForeignKey(Technology_card, on_delete=models.CASCADE)
time_production = models.PositiveIntegerField(verbose_name='Время изготовления', default=10)
time_baking_time = models.PositiveIntegerField(verbose_name='Время выпекания', default=10)  
price = models.DecimalField(verbose_name='Цена', max_digits = 10, decimal_places=2, default = 0)

def __str__(self):
    return self.title

class Meta():
    verbose_name = 'Пицца'
    verbose_name_plural = 'Пицца'

class OrderPizza(models.Model):

STATUS_ACCEPT = 'Принят'
STATUS_COOK = 'Готовится'
STATUS_PREPARED = 'Приготовлен'
STATUS_DELIVERED = 'Доставляется'
STATUS_EXECUTE = 'Исполнен'

STATUS_CHOISES = (
    (STATUS_ACCEPT, 'Принят'),
    (STATUS_COOK, 'Готовится'),
    (STATUS_PREPARED, 'Приготовлен'),
    (STATUS_DELIVERED, 'Доставляется'),
    (STATUS_EXECUTE, 'Исполнен')
)
id = models.AutoField(primary_key=True)
date = models.DateField(verbose_name='Дата заказа', null=False, default = timezone.now())
name = models.CharField(verbose_name='Имя заказчика', max_length=50)
surname = models.CharField(verbose_name='Фамилия заказчика', max_length=50)
phone_number = models.CharField(verbose_name='Номер телефона', max_length=10)
adress = models.CharField(verbose_name='Адрес доставки', max_length=40)
order = models.ManyToManyField(Pizza)
courier = models.ForeignKey(Courier, on_delete=models.CASCADE)
status = models.CharField(
    verbose_name='Статус', 
    max_length=12, 
    choices=STATUS_CHOISES, 
    default=STATUS_ACCEPT
    )
price = models.DecimalField(verbose_name='Стоимость заказа', default=0, max_digits = 10, decimal_places=2)

def save(self, *args, **kwargs):
    
    self.price = sum([order.price for order in self.order.all()])        
    super(OrderPizza, self).save(*args, **kwargs)

def __str__(self):
    return ('Заказ от {0}  {1}').format(self.surname, self.date)

class Meta():
    verbose_name = 'Заказ пиццы'
    verbose_name_plural = 'Заказы пиццы'     
Вернуться на верх