Миграции в Django: решение проблем с базой данных
Невыполнение миграций приводит к ошибкам, связанным с отсутствием таблиц в базе данных. Например, при попытке перехода на страницу новостей (/news/) может возникнуть ошибка об отсутствии таблицы news_articles. Это происходит потому, что Django не знает о созданных моделях и соответствующих таблицах до выполнения миграции. Название таблицы news_articles формируется из названия приложения (news), модели (например, Articles) с добавлением знака подчеркивания.
В примере из урока допущена ошибка в написании поля TextField в модели. Правильный вариант: models.TextField(). Неправильное написание может вызывать ошибки при миграциях.
Выполнение миграций
Для выполнения миграции:
- Остановите локальный сервер.
- Откройте терминал или командную строку.
- Используя стандартную структуру проекта, выполните команды:
python manage.py makemigrations python manage.py migrate
Команда makemigrations создает миграционные файлы, отражающие изменения в моделях. Команда migrate применяет эти изменения к базе данных. Для отдельных приложений (например, news) можно выполнить: python manage.py makemigrations news и затем python manage.py migrate.
После успешного выполнения миграций запустите сервер. Ошибки доступа к страницам, связанным с новыми таблицами, должны исчезнуть. Отсутствие данных на странице новостей означает, что база данных пуста.
Настройка и использование панели администратора
Для доступа к панели администратора создайте суперпользователя:
python manage.py createsuperuser
Система запросит имя пользователя, email и пароль. После создания суперпользователя войдите в панель администратора, используя эти данные.
Панель администратора позволяет управлять пользователями и группами: добавлять, редактировать и удалять пользователей, а также изменять их права доступа.
Регистрация моделей в панели администратора
Для отображения моделей (например, Articles из приложения news) в панели администратора, создайте файл admin.py в приложении news со следующим кодом:
from django.contrib import admin
from .models import Articles
admin.site.register(Articles)
После этого модель Articles появится в панели администратора. После перезапуска сервера можно добавлять, редактировать и удалять записи через интерфейс панели. Новые записи будут отображаться на странице новостей.