sorted
функция берет элементы из заданного итеративного объекта и сравнивает их. Такое сравнение может быть >
или <
(как в вашем случае).
Я полагаю, что get_video_queryset
возвращает итерацию из Playlist
объектов, и эти объекты не поддерживают сравнения - вот почему вы получить сообщение об ошибке, в котором говорится, что сравнение невозможно.
У вас есть 3 возможности:
Используйте метод ORM order_by()
для сортировки по указанному c полю модели. Пример:
# Assuming that playlist has a name and you want to sort by it
playlists = get_video_queryset(query).order_by('name')
Подробнее о заказе можно прочитать в Django документации . Это лучшее решение, если вы работаете с набором запросов, потому что упорядочивание будет выполняться в одном запросе самой базой данных.
Укажите параметр key=
для функции sorted
. key
- это функция, которая принимает элемент из отсортированного списка в качестве параметра и должна возвращать значение, которое будет использоваться при сравнении. Подробнее об этом в Python документах
Реализуйте расширенные методы сравнения в своем классе Playlist
, чтобы объекты этого класса могли сравнивать напрямую.
Первое решение кажется мне лучшим, потому что оно самое чистое и быстрое если get_video_queryet
возвращает набор запросов .
Третий вариант кажется наихудшим, потому что вы добавляете много кода в свои модели, и он намного сложнее, чем первые два метода.