Генерация миграции после внедрения новых моделей в Django

Сохраните модели в зарегистрированном Django-приложении, выполните makemigrations для создания файла и migrate для применения. Перед применением просмотрите план.

Короткий ответ

Что ответить на собеседовании

Сохраните модели в зарегистрированном Django-приложении, выполните makemigrations для создания файла и migrate для применения. Перед применением просмотрите план.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо добавить две новые модели в приложение Django — PrepLevel и AcademicCourse. Первая модель будет хранить информацию об уровне подготовки, вторая — о курсах, включая код с проверкой формата, название специальности и профилей. После создания моделей следует выполнить миграцию, чтобы изменения отразились в базе данных.

from django.db import models
from django.core.validators import RegexValidator

# код, специальность, профили, уровень подготовки

class PrepLevel(models.Model):
    level = models.TextField()

class AcademicCourse(models.Model):
    code = models.CharField(
        max_length=8,
        validators=[
            RegexValidator(
                regex=r'^\d{2}\.\d{2}\.\d{2}$',
                message='Строка должна быть в формате "01.03.02".'
            )
        ]
    )
    speciality = models.TextField()
    profs = models.TextField()
    level = models.ForeignKey(
        PrepLevel,
        verbose_name='Уровень подготовки',
        on_delete=models.CASCADE,
        related_name='courses'
    )

Ответ

Сохраните модели в зарегистрированном Django-приложении, выполните makemigrations для создания файла и migrate для применения. Перед применением просмотрите план.

Для приложения с условным именем courses:

python manage.py makemigrations courses
python manage.py sqlmigrate courses 0001
python manage.py migrate --plan
python manage.py migrate

0001 замените именем реально созданной миграции. Убедитесь, что приложение находится в INSTALLED_APPS, а команда работает с нужным окружением и БД. makemigrations не создаёт таблицы само по себе.

RegexValidator проверяется формами/сериализаторами или явным full_clean, но обычный save() автоматически его не вызывает. Для строгой проверки на уровне БД нужен соответствующий constraint. CASCADE удалит курсы при удалении PrepLevel; если это нежелательно, заранее выберите PROTECT.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее