@blazer05

Django, как сделать скидку для товара?

есть модель товара в которой есть поле цены, нужно реализовать скидку. я сделал аналогичное поле в модели товара для скидки, но как теперь сделать, чтоб при выставлении скидки в админке она автоматически высчитывалась и в корзину уже попадала сумма товара со скидкой?
class Product(models. Model):
    category = models.ForeignKey(Category, related_name='product', verbose_name='Категория')
    name = models.CharField(max_length=200, db_index=True, verbose_name='Название')
    slug = models.SlugField(max_length=200, db_index=True, verbose_name='Транслит')
    image = models.ImageField(upload_to='products/%y/%m/%d/', blank=True, verbose_name='Изображение товара')
    description = models.TextField(blank=True, verbose_name='Описание')
    price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='Цена')
    discount = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True, verbose_name='Скидка')
  • Вопрос задан
  • 1757 просмотров
Решения вопроса 1
@AlexandrBirukov
Можно в модели товара добавить поле скидки в процентах типа такого:
sale = models.IntegerField('Скидка в процентах', blank=True, default=0)


В этой же модели добавить метод получения этой скидки:
def get_sale(self):
        '''Расчитать стоимость со скидкой'''
        price = int(self.price * (100 - self.sale) / 100)
        return price


В шаблоне или корзине итоговую стоимость можно получать так:
{{ product.get_sale }}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@property
def get_final_price:
  return self.price - self.price * self.discount
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы