Реализация добавления книги с набором обложек в Django
Оберните создание книги и обложек в transaction.atomic, не изменяйте входной data и возвращайте созданную книгу. bulk_create допустим при отсутствии нужных save-сигналов.
Читать ответПодготовка к интервью
306 вопросов по Django с технических собеседований
Что проверяют на интервью
На странице собраны вопросы по Django — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: django, backend, api.
Каталог
Оберните создание книги и обложек в transaction.atomic, не изменяйте входной data и возвращайте созданную книгу. bulk_create допустим при отсутствии нужных save-сигналов.
Читать ответНужно исправить импорты и валидацию, защитить запуск рассылки и вынести отправку из HTTP-запроса. Текущий код неверно фиксирует общий статус и допускает повторную отправку.
Читать ответСохраните модели в зарегистрированном Django-приложении, выполните makemigrations для создания файла и migrate для применения. Перед применением просмотрите план.
Читать ответФункция меняет входной словарь и может оставить книгу без обложек при частичном сбое. Нужны валидация и единая транзакция.
Читать ответНачните с границ доменов и модульности монолита, затем выделяйте по одному слабо связанному компоненту через стабильный контракт и обратимое переключение трафика.
Читать ответПри стандартных менеджерах будет два SELECT. Первый цикл получает статьи и авторов через JOIN, второй заново загружает статьи; чтение author_id не требует отдельного обращения к Author.
Читать ответДобавьте Count по обратной связи Publication и отфильтруйте значение больше пяти. Точное имя связи зависит от related_name/related_query_name, поэтому его нужно сверить с моделью.
Читать ответВозьмите срез QuerySet: Product.objects.order_by('pk')[:5]. В SQL это ограничит результат пятью строками; сортировка по pk делает выбор воспроизводимым, но не случайным.
Читать ответНужно исправить DRF-обработчик, передавать задаче идентификатор Feedback и согласовать enqueue с commit. Письмо и изменение БД не образуют общую транзакцию, поэтому возможны потери статуса или дубли писем.
Читать ответСоздайте виртуальное окружение, установите Django, выполните startproject и настройте .gitignore. Затем сделайте первый коммит и отправьте его в пустой GitHub-репозиторий, не включая секреты и локальную БД.
Читать ответЗагрузите книги через Book.objects.select_related('author'). Тогда имя автора берётся из того же SQL-результата, и цикл не выполняет отдельный запрос для каждой книги.
Читать ответПоказанный фрагмент не выполняет ни одного SQL-запроса. all() и filter() только создают ленивые QuerySet; чтение БД начнётся при их вычислении.
Читать ответ