Встречается на собеседованиях • сегодня

Можно ли к миграции привязать Python код

Да, в Django можно привязать Python-код к миграциям через RunPython или RunSQL. RunPython позволяет выполнить произвольный Python-код при применении (forwards) или откате (backwards) миграции.

Пример:

python
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),
]

text

**Нюансы:**  
- Используйте `apps.get_model()` вместо прямого импорта моделей.  
- `reverse_func` необязателен, но желателен для отката.  
- Для сложных операций предпочтительнее `RunSQL`.  
- Избегайте бизнес-логики в миграциях — только данные и схема.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы