wip: noticed that django has a RenameModel field. Simplified migration

This commit is contained in:
Adrien Lemaire 2019-04-24 11:43:53 +09:00
parent 371a60e70f
commit fa41c9084d

View file

@ -6,12 +6,11 @@ import django.db.models.deletion
import django.utils.timezone import django.utils.timezone
def forward_data_migration(apps, schema_editor): def forward_migration(apps, schema_editor):
pass BaseTask = apps.get_model("todo", "BaseTask")
Task = apps.get_model("todo", "Task")
for base_task in BaseTask.objects.all():
def backward_data_migration(apps, schema_editor): Task.objects.create(basetask_ptr=base_task)
pass
class Migration(migrations.Migration): class Migration(migrations.Migration):
@ -22,90 +21,23 @@ class Migration(migrations.Migration):
] ]
operations = [ operations = [
migrations.RenameModel("Task", "BaseTask"),
migrations.CreateModel( migrations.CreateModel(
name="BaseTask", name="Task",
fields=[ fields=[
( (
"id", "basetask_ptr",
models.AutoField( models.OneToOneField(
auto_created=True, auto_created=True,
default=1,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True, primary_key=True,
serialize=False, serialize=False,
verbose_name="ID", to="todo.BaseTask",
), ),
), )
("title", models.CharField(max_length=140)),
(
"created_date",
models.DateField(
blank=True,
default=django.utils.timezone.now,
null=True,
),
),
("due_date", models.DateField(blank=True, null=True)),
("completed", models.BooleanField(default=False)),
("completed_date", models.DateField(blank=True, null=True)),
("note", models.TextField(blank=True, null=True)),
(
"priority",
models.PositiveIntegerField(blank=True, null=True),
),
(
"assigned_to",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name="todo_assigned_to",
to=settings.AUTH_USER_MODEL,
),
),
(
"created_by",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name="todo_created_by",
to=settings.AUTH_USER_MODEL,
),
),
(
"task_list",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.CASCADE,
to="todo.TaskList",
),
),
], ],
options={"ordering": ["priority", "created_date"]},
),
migrations.RunPython(forward_data_migration, backward_data_migration),
migrations.AlterModelOptions(name="task", options={}),
migrations.RemoveField(model_name="task", name="assigned_to"),
migrations.RemoveField(model_name="task", name="completed"),
migrations.RemoveField(model_name="task", name="completed_date"),
migrations.RemoveField(model_name="task", name="created_by"),
migrations.RemoveField(model_name="task", name="created_date"),
migrations.RemoveField(model_name="task", name="due_date"),
migrations.RemoveField(model_name="task", name="id"),
migrations.RemoveField(model_name="task", name="note"),
migrations.RemoveField(model_name="task", name="priority"),
migrations.RemoveField(model_name="task", name="task_list"),
migrations.RemoveField(model_name="task", name="title"),
migrations.AddField(
model_name="task",
name="basetask_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="todo.BaseTask",
),
preserve_default=False,
), ),
migrations.RunPython(forward_migration),
] ]