My (simplified) model:
class Stop(models.Model):
EXPRESS_STOP = 0
LOCAL_STOP = 1
STOP_TYPES = (
(EXPRE
Use QuerySet.extra() along with CASE ... END
to define a new field, and sort on that.
Stops.objects.extra(select={'cost': 'CASE WHEN price=0 THEN 0 '
'WHEN type=:EXPRESS_STOP THEN price/2 WHEN type=:LOCAL_STOP THEN price*2'},
order_by=['cost'])
That, or cast the QuerySet
returned from the rest to a list, then use L.sort(key=operator.attrgetter('cost'))
on it.