Рассмотрим этот пример модели:Сортировка по отображения названия вместо фактического значения
MODEL_CHOICES = ( (U "спам", и "Спам"), (и "XOUP", и "Eggsoup") , )
(надрез)
Type = models.CharField (max_length = 4, выбор = MODEL_CHOICES)
(Фактическая реализация домен специфичен и в неанглийском, поэтому этот образце должен делать.)
При создании моего запроса, я хотел бы отсортировать результаты по этому полю типа, и настоящий результаты для пользователя. Естественно, я хочу сортировать по отображаемому имени этого поля.
Что-то вдоль линий:.
документов = MyModel.objects.filter (...) order_by ("тип")
Однако [query-set].order_by([field])
только позволяет сортировать по имени поля , что приведет к SPAM < XOUP (к машине), хотя Eggsoup < Спам (для читателя).
Рассмотрим множество экземпляров, отсортированных по типу:
Имя | Тип
obj1 | СПАМ
obj2 | СПАМ
obj3 | СПАМ
obj4 | XOUP
obj5 | XOUP
Но это порядок, пользователь увидит, то пользователь увидит отображаемое имя, а не внутреннее значение поля столбца типа:
Имя | Тип
obj1 | Спам
obj2 | Спам
obj3 | Спам
obj4 | Eggsoup
obj5 | Eggsoup
Который в глазах человека не отсортирован правильно.
Есть ли функция в Django, которая позволяет сортировать отображаемое имя? Или способ выполнить это «вручную»?(Переименование выбора так, чтобы отображаемое имя было в том же порядке, что и фактические значения, не является опцией.)
Спасибо. Использование оператора выглядит превосходно, я не знал об этом. – nikola