I have the following model (greatly simplified for the purposes of this question):
class Product(models.Model):
price = models.DecimalField(max_digits=8, dec
If you stumble upon this requirement and happen to be using Django 1.8 and higher, you can use django.db.models.functions.Coalesce for a slightly nicer, cross db-engine, solution:
from django.db.models.functions import Coalesce
Product.objects.annotate(
current_price=Coalesce('sale_price', 'price')
).order_by('-current_price')