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 = 'Заказы пиццы'