Требуется ли функция RunPython в миграциях django при сминании коммитов, если они только изменяют существующие данные?
У меня есть проект django, который нуждается в миграции. Все функции RunPython перемещают данные из одной колонки в другую после внесения некоторых изменений. Если это только для перемещения старых данных и не влияет на вновь созданные записи, то нужно ли это при сминании миграций или создании их с нуля? Вот пример:
# Adding the new field
migrations.AddField(
model_name='approvalrequest',
name='club',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='members.club'),
)
# RunPython function call
migrations.RunPython(migrate_membership_to_enrollment, reverse_code=reverse_migration)
# RunPython function
def migrate_membership_to_enrollment(apps, schema_editor):
ApprovalRequestModel = apps.get_model('approval_requests', 'approvalrequest')
db_alias = schema_editor.connection.alias
with transaction.atomic():
requests = ApprovalRequestModel.objects.using(db_alias).all()
for request in requests:
club = request.membership.club
request.club = club
request.save()
# Deleting memberhsip field
migrations.RemoveField(
model_name='approvalrequest',
name='membership',
),
Вы видите, что мы вносим изменения и перемещаем существующие данные в соответствии с ними. Теперь, когда это уже сделано и все перешли на последние версии миграций, можно ли вообще отказаться от этого метода?