Писал ли кастомные миграции на Django
Python
Junior
Без компании
Писал ли кастомные миграции на Django
Ответы
Да, писал. Кастомные миграции в Django нужны для сложных изменений БД, которые не покрываются стандартными `makemigrations`. Например, для массового обновления данных, изменения схемы с особыми условиями или работы с сырым SQL.
Пример кастомной миграции:
```
from django.db import migrations
def forwards_func(apps, schema_editor):
# Получаем модель из исторических версий
User = apps.get_model('auth', 'User')
# Логика миграции
for user in User.objects.filter(is_staff=True):
user.is_superuser = True
user.save()
def reverse_func(apps, schema_editor):
User = apps.get_model('auth', 'User')
for user in User.objects.filter(is_superuser=True):
user.is_superuser = False
user.save()
class Migration(migrations.Migration):
dependencies = [('auth', 'XXXX_initial')]
operations = [
migrations.RunPython(forwards_func, reverse_func),
]
```
Важно:
- Всегда указывайте `reverse_func` для отката
- Используйте `apps.get_model()` вместо прямого импорта моделей
- Для сырого SQL — `migrations.RunSQL`
- Тестируйте миграции на копии БД перед продакшеном