# Backend (Django): миграции, суперпользователь, команды

Краткая инструкция по типичным операциям с бэкендом платформы.

---

## Через Docker (рекомендуется на сервере)

Все команды выполняйте из каталога проекта (`/var/www/platform/prod`). Сервис Django в compose называется **web**.

### Миграции

```bash
# Применить все миграции
docker compose -p platform exec web python manage.py migrate

# Создать миграции по изменениям в моделях (после правок в models.py)
docker compose -p platform exec web python manage.py makemigrations

# Создать миграции для конкретного приложения
docker compose -p platform exec web python manage.py makemigrations app_name

# Показать список миграций и их статус
docker compose -p platform exec web python manage.py showmigrations
```

После изменения моделей: сначала `makemigrations`, затем `migrate`.

### Суперпользователь (админ)

```bash
# Создать суперпользователя (интерактивно запросит email и пароль)
docker compose -p platform exec web python manage.py createsuperuser

# Сменить пароль существующего пользователя
docker compose -p platform exec web python manage.py changepassword <email_или_username>
```

Доступ в админку: **https://api.uchill.online/admin/** (логин/пароль суперпользователя).

### Сбор статики

```bash
# Собрать статические файлы в STATIC_ROOT (для production)
docker compose -p platform exec web python manage.py collectstatic --noinput
```

### Django shell

```bash
# Обычный shell
docker compose -p platform exec web python manage.py shell

# Shell с автоматическим импортом моделей (если установлен django-extensions)
docker compose -p platform exec web python manage.py shell_plus
```

### Другие полезные команды

```bash
# Проверка конфигурации
docker compose -p platform exec web python manage.py check

# Список всех команд
docker compose -p platform exec web python manage.py help
```

---

## Локально (без Docker)

Из каталога **backend** (`/var/www/platform/prod/backend`). Нужны: Python 3, установленные зависимости, переменные окружения (или `.env` с `DATABASE_URL` и т.д.).

```bash
cd /var/www/platform/prod/backend

# Виртуальное окружение (если используется)
# source .venv/bin/activate   # Linux/macOS
# .venv\Scripts\activate     # Windows

# Миграции
python manage.py makemigrations
python manage.py migrate

# Суперпользователь
python manage.py createsuperuser

# Статика
python manage.py collectstatic --noinput

# Запуск сервера разработки
python manage.py runserver 0.0.0.0:8000
```

---

## Порядок при первом развёртывании

1. Запустить контейнеры: `docker compose -p platform up -d`
2. Применить миграции: `docker compose -p platform exec web python manage.py migrate`
3. Создать суперпользователя: `docker compose -p platform exec web python manage.py createsuperuser`
4. При необходимости: `docker compose -p platform exec web python manage.py collectstatic --noinput`

В текущем `docker-compose` при старте сервиса **web** уже выполняется `migrate` в command, поэтому шаг 2 часто не нужен при обычном перезапуске.
