Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 611новых вакансий за сутки·93 573вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 282
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 402 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python16 842
  • Облачные технологии13 724
  • QA вакансии3 439
  • Backend вакансии2 083
  • Инженер данных1 763
  • Продакт-менеджер1 196

Разработка

  • Android1 842
  • iOS1 687
  • Fullstack вакансии958
  • AI вакансии949
  • Frontend вакансии735
  • Mobile вакансии44

По стеку

  • Go8 619
  • Java6 377
  • Node.js1 968
  • .NET1 639
  • Kotlin1 597
  • Rust1 444
  • PHP670
  • C#650
  • C++538

DevOps и инфраструктура

  • Kubernetes7 591
  • DevOps вакансии5 863
  • Linux-инфраструктура5 413
  • Terraform / IaC4 162
  • CI/CD2 997
  • Мониторинг и Observability1 752
  • SRE558
  • Кибербезопасность424

Аналитика и данные

  • Data Scientist1 087
  • Бизнес-аналитик910
  • Аналитик данных849
  • Системный аналитик148

Другие направления

  • Проджект-менеджер557
  • UI/UX дизайн139
  • Ручное тестирование14

По регионам

  • Вакансии в США45 355
  • Вакансии в Европе22 646
  • Вакансии в Канаде4 483
  • Работа в России3 902

По формату

  • Удалённые вакансии75 369
  • Релокация в США45 353
  • Гибридная работа12 002
  • Офисная работа7 033

По уровню

  • Senior вакансии42 326
  • Middle вакансии20 996
  • Junior вакансии6 757

Сейчас нанимают

Все компании
  • Wise192 вакансии
  • Rakuten189 вакансий
  • ASML163 вакансии
  • Grab139 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo19 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К подготовке по вакансии←К теме DjangoВсе вопросы
DjangoJuniorТеория

Как работают миграции Django и что происходит при выполнении makemigrations vs migrate?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

makemigrations читает модели и создаёт файлы миграций в коде, не трогая базу; migrate применяет эти файлы к базе, выполняя SQL и фиксируя результат в таблице django_migrations.

makemigrations: генерация файлов миграций

python manage.py makemigrations — читает текущее состояние моделей из кода, сравнивает с последней применённой миграцией (внутреннее состояние хранится в самих файлах миграций), и генерирует новый файл-миграцию в директории migrations/. База данных в этот момент не меняется.

# Создать миграции для всех приложений
python manage.py makemigrations

# Только для конкретного приложения
python manage.py makemigrations myapp

# Дать осмысленное имя
python manage.py makemigrations myapp --name add_user_avatar

# Посмотреть SQL без применения
python manage.py sqlmigrate myapp 0003_add_user_avatar

Миграции Django: как это работает

Миграции — механизм версионирования схемы базы данных. Django отслеживает изменения моделей и превращает их в SQL-инструкции, которые применяются к базе. Два главных шага — makemigrations и migrate — часто путают, но они делают принципиально разные вещи.

Что внутри файла миграции

# myapp/migrations/0003_add_user_avatar.py
from django.db import migrations, models

class Migration(migrations.Migration):
    dependencies = [
        ("myapp", "0002_alter_user_email"),
    ]

    operations = [
        migrations.AddField(
            model_name="user",
            name="avatar",
            field=models.ImageField(null=True, blank=True, upload_to="avatars/"),
        ),
    ]

Файл декларативен: dependencies выстраивают граф порядка применения, operations — список изменений схемы.

migrate: применение миграций к базе

python manage.py migrate — читает все непримененные файлы миграций и выполняет их SQL в базе. Таблица django_migrations хранит историю применённых миграций.

# Применить все непримененные миграции
python manage.py migrate

# Применить миграции конкретного приложения
python manage.py migrate myapp

# Откатиться к конкретной миграции
python manage.py migrate myapp 0002

# Показать статус всех миграций
python manage.py showmigrations

# Показать статус конкретного приложения
python manage.py showmigrations myapp

Полный цикл: от модели до базы

# 1. Изменяем модель в models.py
class UserProfile(models.Model):
    user = models.OneToOneField("auth.User", on_delete=models.CASCADE)
    bio = models.TextField(blank=True)   # новое поле
    avatar = models.ImageField(null=True, upload_to="avatars/")  # ещё одно
# 2. Генерируем файл миграции
python manage.py makemigrations myapp --name add_bio_and_avatar
# Migrations for 'myapp':
#   myapp/migrations/0003_add_bio_and_avatar.py
#     - Add field avatar to userprofile
#     - Add field bio to userprofile

# 3. Проверяем SQL
python manage.py sqlmigrate myapp 0003_add_bio_and_avatar

# 4. Применяем
python manage.py migrate
# Applying myapp.0003_add_bio_and_avatar... OK

django_migrations: таблица учёта

Django хранит применённые миграции в таблице django_migrations (app, name, applied). При запуске migrate он сравнивает файлы в migrations/ с записями в этой таблице и применяет только отсутствующие.

Особые команды

  • --check: завершается с кодом 1 если есть несозданные миграции — удобно в CI.
  • squashmigrations: сжимает много миграций в одну для оптимизации.
  • --fake: помечает миграцию как применённую без реального выполнения SQL (нужно при ручных изменениях схемы).
  • --fake-initial: для уже существующих таблиц при начальной интеграции.

Подводные камни

  • Файлы миграций нужно коммитить в git — они часть кодовой базы. Не добавляйте */migrations/ в .gitignore.
  • Конфликты миграций при работе нескольких разработчиков: два разработчика одновременно создали 0003_*.py. Решение: python manage.py makemigrations --merge.
  • Нельзя переименовывать файлы миграций вручную — Django ищет их по имени в django_migrations.
  • Удаление поля из модели без миграции приводит к ошибкам на уровне ORM, но таблица в БД остаётся нетронутой до migrate.
  • makemigrations без migrate ничего не меняет в схеме — распространённая ошибка новичков.
  • Откат миграций (migrate myapp 0002) поддерживается только если операция обратима; RunPython без reverse_code — необратима.
  • В production применять миграции нужно до деплоя нового кода, чтобы избежать рассинхронизации схемы и ORM.

Типичные ошибки

  • Описывать migrations makemigrations vs migrate только как термин и не показывать механизм на минимальном примере.
  • Игнорировать ошибки, пустые данные, конкурентный доступ или границы транзакции.
  • Не связывать поведение с официальным контрактом Django и реальной эксплуатацией.

Что проверяет интервьюер

  • Объясняет migrations makemigrations vs migrate через последовательность действий, а не через набор ключевых слов.
  • Приводит короткий кодовый пример или production-сценарий с ожидаемым поведением.
  • Называет хотя бы один риск: производительность, безопасность, транзакции, память или сопровождение.

Как вы знаете этот вопрос?

Проверить себя по теме Django →

Источники

  • https://docs.djangoproject.com/en/5.2/topics/migrations/
←Предыдущий вопросКак работает ORM Django и какие у него преимущества перед сырым SQL?Следующий вопрос→В каких backend-проектах Django является сильным выбором, а где лучше выбрать более простой или другой стек?

Связанные темы

Djangoapi-designtechnical-reasoning

Вакансии с этим навыком

  • AI/AI Agent Developer (Python)
  • Fullstack-разработчик (Python + React)
  • Python Developer
  • Backend Software Engineer
  • Network Engineer – AlgoSec

Частые вопросы на собеседовании

  • Как Django защищает от SQL-инъекций, CSRF и XSS-атак?
  • Как организовать настройки, secrets и environment-specific config без утечек?
  • Объясните жизненный цикл запроса/ответа в Django — от разрешения URL до HTTP-ответа.
  • Что такое проблема N+1 запросов в Django и как её обнаружить и исправить?