Как обрабатывать существующие данные при внедрении промежуточной модели между базовой моделью и дочерней моделью в иерархию полиморфного наследования Django

Текущие модели:

class Task(PolymorphicModel):
    pass

class DownloadTask(Task):
    pass

Новые модели: А теперь я хочу добавить новый слой под названием VirtualTask:

class Task(PolymorphicModel):
    pass

class VirtualTask(Task):
    pass

class DownloadTask(VirtualTask):
    pass

Миграция выглядит примерно так:

class Migration(migrations.Migration):

    dependencies = [
        ("tasks", "0005_alter_task_last_error"),
    ]

    operations = [
        migrations.CreateModel(
            name="VirtualTask",
            fields=[
                (
                    "task_ptr",
                    models.OneToOneField(
                        auto_created=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        parent_link=True,
                        primary_key=True,
                        serialize=False,
                        to="tasks.task",
                    ),
                ),
            ],
            options={
                "abstract": False,
                "base_manager_name": "objects",
            },
            bases=("tasks.task",),
        ),
        migrations.RemoveField(
            model_name="downloadtask",
            name="task_ptr",
        ),
        migrations.AddField(
            model_name="downloadtask",
            name="virtualptask_ptr",
            field=models.OneToOneField(
                auto_created=True,
                default=1,
                on_delete=django.db.models.deletion.CASCADE,
                parent_link=True,
                primary_key=True,
                serialize=False,
                to="tasks.virtualtask",
            ),
            preserve_default=False,
        ),
    ]

“Как я должен обрабатывать существующие данные при вставке новой промежуточной модели (VirtualTask) между базовой моделью (Task) и ее подклассами в Django

  • должен ли я настроить файл переноса, и если да, то каков будет пошаговый подход?”
Вернуться на верх