Какой-то код и моя цель
Моя (упрощенная) модель:
class Stop(models.Model):
EXPRESS_STOP = 0
LOCAL_STOP = 1
STOP_TYPES = (
(EXPRESS_STOP, 'Express stop'),
(LOCAL_STOP, 'Local stop'),
)
name = models.CharField(max_length=32)
type = models.PositiveSmallIntegerField(choices=STOP_TYPES)
price = models.DecimalField(max_digits=5, decimal_places=2, null=True, blank=True)
def _get_cost(self):
if self.price == 0:
return 0
elif self.type == self.EXPRESS_STOP:
return self.price / 2
elif self.type == self.LOCAL_STOP:
return self.price * 2
else:
return self.price
cost = property(_get_cost)
Моя цель : Я хочу отсортировать по свойству cost
. Я попробовал два подхода.
Использование API-интерфейса QuerySet order_by
Stops.objects.order_by('cost')
Это привело к следующей ошибке шаблона:
Caught FieldError while rendering: Cannot resolve keyword 'cost' into field.
Использование шаблона фильтра dictsort
{% with deal_items|dictsort:"cost_estimate" as items_sorted_by_price %}
Получена следующая ошибка шаблона:
Caught VariableDoesNotExist while rendering: Failed lookup for key [cost] in u'Union Square'
Итак ...
Как мне это сделать?