Как обрабатывать существующие данные при внедрении промежуточной модели между базовой моделью и дочерней моделью в иерархию полиморфного наследования 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
- должен ли я настроить файл переноса, и если да, то каков будет пошаговый подход?”