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

Какой метод есть в миграции для запуска кода Python

Для выполнения произвольного кода Python в миграциях Django используется метод RunPython. Он принимает два аргумента - функции для применения (forward_func) и отмены (reverse_func) миграции.

Пример:

python
from django.db import migrations

def create_initial_data(apps, schema_editor):
    # Получаем модель из исторической версии
    MyModel = apps.get_model('myapp', 'MyModel')
    # Создаем объекты
    MyModel.objects.create(name='Test')

def reverse_create_initial_data(apps, schema_editor):
# Удаляем созданные объекты
MyModel = apps.get_model('myapp', 'MyModel')
MyModel.objects.filter(name='Test').delete()

class Migration(migrations.Migration):
dependencies = [...]
operations = [
migrations.RunPython(
create_initial_data,
reverse_create_initial_data
),
]

text

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

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

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

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