После пересоздания БД в джанго проекте джанго не создаёт свои стандартные таблицы при миграции?

Когда вы выполняете пересоздание базы данных в Django проекте, Django не создает свои стандартные таблицы при следующей миграции. Это происходит потому, что Django хранит информацию о состоянии миграций в специальной таблице в базе данных, называемой "django_migrations".

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

Когда вы пересоздаете базу данных и запускаете миграции, Django будет сравнивать текущее состояние миграций в таблице "django_migrations" с файлами миграций в вашем проекте. Если система обнаруживает, что текущее состояние миграций не соответствует файлам миграций, она выполнит необходимые действия для приведения базы данных в соответствие с файлами миграций.

Однако, если вы пересоздали базу данных без каких-либо миграций или без записей в таблице "django_migrations", Django не будет иметь информации о существовании этих стандартных таблиц, поэтому он не создаст их при следующей миграции.

Чтобы решить эту проблему, вы можете вручную добавить записи в таблицу "django_migrations" для каждой миграции, которую вы хотите применить. Например, если вы хотите создать стандартные таблицы Django, вы можете добавить записи для всех соответствующих миграций в таблицу "django_migrations".

Вы можете воспользоваться следующим методом для добавления записи в таблицу "django_migrations":

from django.db import connection
from django.db.migrations.executor import MigrationExecutor
from django.db.migrations.loader import MigrationLoader

# Создаем экземпляр класса MigrationLoader
loader = MigrationLoader(connection)
# Получаем список всех миграций
migration_names = loader.graph.leaf_nodes()

# Исполняем миграции
executor = MigrationExecutor(connection)
# Применяем миграции
for migration_name in migration_names:
    migration = loader.get_migration(migration_name)
    executor.apply_migration(migration, fake=False)

Этот код загрузит все миграции в проекте и применит их к базе данных, создавая все необходимые таблицы.

Однако, было бы неправильно добавлять записи в таблицу "django_migrations" вручную для стандартных миграций Django. Вместо этого, вы можете воспользоваться командой migrate в Django, которая автоматически обновит таблицу "django_migrations" и применит необходимые миграции к базе данных. Например, вы можете выполнить следующую команду в командной строке:

python manage.py migrate

Это выполнит все миграции, включая стандартные миграции Django, и создаст необходимые таблицы.