📝 Вопросы на самопроверку: Django-блок
⚡ Топ-5 вопросов
- Для чего нужен метод
__str__в модели Django? - Что делает
ordering = ['-published_date']в классе Meta? - Какие исключения бросает метод
get()? - В чём разница между
TabularInlineиStackedInline? - Что нужно прописать в settings.py для кастомной модели User?
Блок А: Метод __str__ и класс Meta
A-1. Метод __str__
Для чего нужен метод __str__ в модели Django? Что изменится в admin-панели, если его не определить?
A-2. Класс Meta
Назовите не менее пяти атрибутов класса Meta модели Django и объясните, что каждый из них делает.
A-3. db_table
По какому правилу Django генерирует имя таблицы по умолчанию? Как его изменить?
A-4. index_together vs indexes
Почему в современном Django рекомендуется использовать indexes вместо index_together?
Блок Б: Административная панель
Б-1. Регистрация модели
Назовите два способа зарегистрировать модель в Django Admin. Какой предпочтительнее?
Б-2. ModelAdmin атрибуты
Что делают атрибуты list_display, search_fields, list_filter и list_per_page?
Б-3. Пользовательские действия
Напишите пользовательский action для модели Task, который переводит выбранные задачи в статус "Done".
Блок В: Инлайн-формы
В-1. TabularInline vs StackedInline
Чем отличается отображение TabularInline от StackedInline? Когда использовать каждый?
В-2. Параметр extra
Что означает параметр extra = 1 в классе инлайна?
В-3. Реализация инлайна
Напишите код для добавления TabularInline формы SubTask на страницу редактирования Task в admin.
Блок Г: Модель User
Г-1. Поля встроенного User
Какие поля входят в стандартную модель User из django.contrib.auth.models? Какие обязательны?
Г-2. Иерархия наследования
Из каких классов состоит иерархия модели User? Что предоставляет каждый класс?
Г-3. Кастомный User
Опишите 4 шага создания кастомной модели пользователя. Почему важно прописать AUTH_USER_MODEL до первой миграции?
Блок Д: ORM-запросы
Д-1. QuerySet
Что такое QuerySet? Почему они «ленивые» (lazy)?
Д-2. get() vs filter()
В чём ключевое отличие get() от filter()? Какие исключения может бросить get()?
Д-3. Lookups
Напишите запросы:
- Книги, у которых название содержит "Great" (без учёта регистра)
- Книги, опубликованные в диапазоне 2010–2023 годов
- Книги без указанной цены
Д-4. Класс Q
Напишите запрос: найти книги, которые либо являются бестселлерами, либо опубликованы после 2000 года, но не написаны автором "George Orwell".
Д-5. Класс F
Для чего используется класс F? Напишите запрос, увеличивающий цену всех книг на 15%.
Д-6. Bulk-операции
Чем bulk_create отличается от обычного цикла с save()? В каких ситуациях bulk-операции предпочтительнее?
Ответы: solutions.html