📝 Задания — Урок 26

← К оглавлению урока

⚡ Задания — быстрый список

  • Сопоставьте функции агрегации (Count/Sum/Avg/Min/Max) с описаниями
  • Как сортировать по убыванию в order_by?
  • Какой класс используется для подзапроса?
  • Что такое OuterRef?
  • Что такое сериализация в DRF?

Ответы: смотрите решения

Задания из лекции — блок «Агрегация»

Задание 1.1 — Сопоставление функций агрегации

Сопоставьте функции агрегации с их описанием:

#ФункцияОписание
1CountA. Вычисляет сумму значений указанного поля
2SumB. Подсчитывает количество записей в QuerySet
3AvgC. Нахождение минимального значения указанного поля
4MinD. Вычисляет среднее значение указанного поля
5MaxE. Нахождение максимального значения указанного поля

Задание 1.2 — aggregate vs annotate

Что вернёт следующий код? Объясните разницу между двумя вызовами:

# Вызов A
result_a = Book.objects.aggregate(total=Count('id'))

# Вызов B
result_b = Book.objects.values('author').annotate(cnt=Count('id'))

Задания из лекции — блок «order_by и срезы»

Задание 2.1

Как сортировать объекты QuerySet по полю в обратном порядке?

  • A. Использовать order_by(field_name)
  • B. Использовать order_by(-field_name)
  • C. Использовать order_by('-field_name')

Задание 2.2 — Срезы

Напишите запрос, который возвращает 10 самых дорогих книг, отсортированных по цене по убыванию, пропуская первые 5 (то есть места 6–15).

Задания из лекции — блок «Подзапросы»

Задание 3.1

Какой класс используется для включения результатов одного QuerySet в другой запрос в качестве подзапроса?

  • A. OuterRef
  • B. Subquery
  • C. Avg

Задание 3.2

Какую функцию можно использовать для ссылок на поля из внешнего запроса внутри подзапроса?

  • A. OuterRef
  • B. Subquery
  • C. ExpressionWrapper

Задание 3.3 — Сопоставление классов

Сопоставьте классы и методы с описаниями:

#КлассОписание
1ExpressionWrapperA. Включает результаты одного QuerySet в другой запрос
2AvgB. Ссылается на поля из внешнего запроса внутри подзапроса
3SubqueryC. Оборачивает сложные выражения, чтобы указать тип данных результата
4OuterRefD. Вычисляет среднее значение поля

Задания из лекции — блок «DRF»

Задание 4.1

Что такое сериализация в контексте Django REST Framework (DRF)?

  • A. Процесс преобразования простых форматов данных в сложные структуры
  • B. Процесс преобразования сложных структур данных в простые форматы
  • C. Процесс проверки данных на сервере

Задание 4.2

Какая из следующих функций НЕ является частью Django REST Framework?

  • A. Сериализаторы
  • B. Представления (Views)
  • C. Модели базы данных

Практические задания

Задание 5.1 — Написать запрос

Используя модель Book (поля: title, author, price, publisher), напишите запрос, который:

  • Считает количество книг у каждого издателя
  • Возвращает только издателей с более чем 3 книгами
  • Сортирует по количеству книг по убыванию

Задание 5.2 — DRF минимальный сериализатор

Напишите TaskSerializer на основе ModelSerializer для модели:

class Task(models.Model):
    title = models.CharField(max_length=200)
    description = models.TextField(blank=True)
    status = models.CharField(max_length=20, default='todo')
    deadline = models.DateField(null=True)
    created_at = models.DateTimeField(auto_now_add=True)

Сериализатор должен: включать все поля, сделать id и created_at read-only.

→ Смотреть решения