Задать вопрос
Shshzik
@Shshzik
Начинающий

Как вызвать функцию вместо атрибута в Django?

Есть некая модель:

class Product(models.Model):
    price = models.FloatField('Цена')
    discount = models.IntegerField('Скидка')


При вызове в шаблоне object.price выводится цена без скидки, что верно. Как мне вывести цену с учетом скидки?
Да, я знаю можно написать метод типо get_price_with_discount и в нем брать скидку и цену и выводить результат. А можно ли как-то сделать это просто с ценой? Что бы перед её выводом проверялась скидка?
  • Вопрос задан
  • 188 просмотров
Подписаться 1 Оценить 4 комментария
Решения вопроса 1
sim3x
@sim3x
# https://docs.python.org/3/library/decimal.html
from decimal import Decimal


class Product(models.Model):
    price = models.DecimalField('Цена')  
    # подумай, почему никто никогда не использует флоат для денег
    discount = models.IntegerField('Скидка')
    
    def get_price_with_discount(self):
         return self.price * Decimal(self.discount)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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