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. Как сделать сортировку по полю из связанной модели (с внешним ключом)?