4. Как сделать сортировку по полю из связанной модели (с внешним ключом)?¶
У вас есть две модели, Category и Hero.
class Category(models.Model):
    name = models.CharField(max_length=100)
class Hero(models.Model):
    # ...
    name = models.CharField(max_length=100)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
Вы хотите упорядочить Hero по категориям и внутри каждой категории по имени Hero. Вы можете сделать следующее.
Hero.objects.all().order_by(
    'category__name', 'name'
)
Обратите внимание на двойное подчеркивание (__ ) в 'category__name'. Используя двойное подчеркивание, вы можете сделать сортировку по полю из связанной модели.
Если вы посмотрите на SQL.
SELECT "entities_hero"."id",
       "entities_hero"."name",
       -- more fields
FROM "entities_hero"
INNER JOIN "entities_category" ON ("entities_hero"."category_id" = "entities_category"."id")
ORDER BY "entities_category"."name" ASC,
         "entities_hero"."name" ASC
Рецепты Django ORM 2.0
Содержание
- 1. Как найти запрос, связанный с набором запросов?
 - 2. Как делать OR-запросы в Django ORM?
 - 3. Как делать AND-запросы в Django ORM?
 - 4. Как сделать NOT запрос в Django queryset?
 - 5. Как выполнить объединение двух наборов запросов из одной или разных моделей?
 - 6. Как выбрать только некоторые поля в наборе запросов?
 - 7. Как сделать подзапросное выражение в Django?
 - 8. Как отфильтровать набор запросов с критериями на основе сравнения значений их полей
 - 9. Как отфильтровать поле FileField без какого-либо файла?
 - 10. Как выполнять операции объединения в django ORM?
 - 11. Как найти вторую по величине запись с помощью Django ORM?
 - 12. Найти строки с дублирующимися значениями полей
 - 13. Как найти значения разных полей из набора запросов?
 - 14. Как использовать объекты 
Qдля сложных запросов? - 15. Как группировать записи в Django ORM?
 - 16. Как эффективно выбрать случайный объект из модели?
 - 17. Как использовать произвольные функции базы данных в кверисетах?
 
- 1. Как создать несколько объектов в одном запросе?
 - 2. Как скопировать или клонировать существующий объект модели?
 - 3. Как сделать так, чтобы можно было создать только один объект?
 - 4. Как обновить денормализованные поля в других моделях при сохранении?
 - 5. Как выполнить операцию truncate like с помощью Django ORM?
 - 6. Какие сигналы подает Django во время создания или обновления объекта?
 - 7. Как преобразовать строку в дату и сохранить в базе данных?
 
- 1. Как упорядочить набор запросов по возрастанию или убыванию?
 - 2. Как упорядочить набор запросов без учета регистра?
 - 3. Как сделать сортировку по двум полям
 - 4. Как сделать сортировку по полю из связанной модели (с внешним ключом)?
 - 5. Как сделать сортировку по аннотированному (вычисляемому) полю?
 
- 1. Как моделировать отношения один на один?
 - 2. Как смоделировать отношения «один ко многим»?
 - 3. Как смоделировать отношения «многие ко многим»?
 - 4. Как включить самоссылающийся ключ ForeignKey в модель
 - 5. Как преобразовать существующие базы данных в модели Django?
 - 6. Как добавить модель для представления базы данных?
 - 7. Как создать общую модель, которая может быть связана с любым типом сущности? (Например, категория или комментарий?).
 - 8. Как указать имя таблицы для модели?
 - 9. Как указать имя столбца для поля модели?
 - 10. В чем разница между 
null=Trueиblank=True? - 11. Как использовать UUID вместо ID в качестве первичного ключа?
 - 12. Как использовать поле slug в django для большей читабельности?
 - 13. Как добавить несколько баз данных в приложение django?
 
- 1. Как убедитьтся, что функция использовала фиксированное количество запросов?
 - 2. Как ускорить тестирование путем повторного использования базы данных между прогонами теста?
 - 3. Как перезагрузить объект модели из базы данных?
 
Дополнительно
Вы здесь:
- 
                    
                        Документация Django Рецепты Django ORM 2.0
                    
                    
                    
- 4. Как сделать сортировку по полю из связанной модели (с внешним ключом)?