Можно ли к миграции привязать Python код
Python
Senior
Без компании
Можно ли к миграции привязать Python код
Ответы
Да, в Django можно привязать Python-код к миграциям через `RunPython` или `RunSQL`. `RunPython` позволяет выполнить произвольный Python-код при применении (`forwards`) или откате (`backwards`) миграции.
Пример:
```
from django.db import migrations
def forwards_func(apps, schema_editor):
User = apps.get_model('auth', 'User')
User.objects.create(username='admin')
def reverse_func(apps, schema_editor):
User = apps.get_model('auth', 'User')
User.objects.filter(username='admin').delete()
class Migration(migrations.Migration):
dependencies = [('myapp', '0001_initial')]
operations = [
migrations.RunPython(forwards_func, reverse_func),
]
```
**Нюансы:**
- Используйте `apps.get_model()` вместо прямого импорта моделей.
- `reverse_func` необязателен, но желателен для отката.
- Для сложных операций предпочтительнее `RunSQL`.
- Избегайте бизнес-логики в миграциях — только данные и схема.