Здравствуйте. Есть такая задача. Есть модель с товаром и модель со скидкой. У модели товара есть поле с ценой. У этой же модели есть метод, который формирует список всех скидок на товар, выбирает из них максимальную и возвращает новую цену с учётом этой скидки. Сейчас товары на странице каталога фильтруются по обычной цене при помощи filter(). Собственно вопрос: возможно ли как-то отфильтровать товары по ценам со скидкой?
Сами модели выглядят вот так:
class Product(models.Model):
price = models.DecimalField(default=0, max_digits=9, decimal_places=2, verbose_name=u'Цена')
def discount(self):
discount_list = self.discount_set.all()
new_price = 0
percent_list = []
for discount in discount_list:
percent_list.append(discount.percent)
if percent_list:
new_price = int((1-max(percent_list)/100)*self.price)
return new_price
class Discount(models.Model):
name = models.CharField(max_length=50, verbose_name=u'Название скидки')
slug = models.SlugField(max_length=50, verbose_name=u'URL')
products = models.ManyToManyField(Product, verbose_name=u'Товары со скидкой')
percent = models.DecimalField(decimal_places=0, max_digits=2, verbose_name=u'Процент скидки')