У меня есть следующая модель (значительно упрощенная для для целей этого вопроса):
class Product(models.Model):
price = models.DecimalField(max_digits=8, decimal_places=2)
sale_price = models.DecimalField(max_digits=10, blank=True, null=True, decimal_places=2)
Для большинства товаров будет указана цена, а не указана sale_price. Итак, я могу заказать продукты по цене следующим образом:
Product.objects.order_by('price')
Product.objects.order_by('-price')
Однако у некоторых продуктов будет sale_price, и я не могу найти способ аккуратно их заказать, чтобы цена со скидкой чередовалась с нормальной ценой. Если я попробую сделать заказ по обоим полям:
Product.objects.order_by('sale_price','price')
... тогда все товары, которых нет в продаже, появятся вместе, а за ними все, что есть, вместо того, чтобы чередовать цены.
Есть ли в этом смысл? У кого-нибудь есть способ решить эту проблему?
Спасибо!