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