class Product(models.Model):
price = models.DecimalField('Цена', decimal_places=2, max_digits=9)
class Discount(models.Model):
product = models.OneToOneField(Product, on_delete=models.CASCADE, verbose_name='Товар', related_name='discount')
discount_price = models.DecimalField('Скидочная цена', decimal_places=2, max_digits=9, blank=True, null=True)
discount_percent = models.PositiveSmallIntegerField('Процент скидки (число)', blank=True, null=True)
def save(self, *args, **kwargs):
if not self.discount_percent and not self.discount_price:
raise ValueError('Заполните хотя бы одно поле: процент или скидочная цена')
if not self.discount_percent:
self.discount_percent = (self.discount_price // self.product.price) * 100
elif not self.discount_price:
self.discount_price = (self.product.price * self.discount_percent) // 100
super().save(*args, **kwargs)
Когда я напишу в админке, скидка_процент без скидки_цена будет правильным. У меня действительно скидка.
Но когда я пишу Discount_price без Discount_percent, Discount_percent всегда имеет значение 0
Когда я добавляю много отпечатков, все вводятся данные были правильными, а расчеты - нет. Как я могу это решить?