#34820: Migrations crashes when changing ForeignObject properties.
-------------------------------------+-------------------------------------
Reporter: puc_dong | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: 4.2
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by puc_dong):
Replying to [comment:13 Mariusz Felisiak]:
> A regression test:
> {{{#!diff
> diff --git a/tests/migrations/test_operations.py
b/tests/migrations/test_operations.py
> index d4fc3e855a..6366ccd667 100644
> --- a/tests/migrations/test_operations.py
> +++ b/tests/migrations/test_operations.py
> @@ -2306,6 +2306,46 @@ class OperationTests(OperationTestBase):
> operation.database_forwards(app_label, editor,
new_state, project_state)
> self.assertColumnExists(rider_table, "pony_id")
>
> + def test_alter_field_foreignobject_noop(self):
> + app_label = "test_alflfo_noop"
> + project_state = self.set_up_test_model(app_label)
> + project_state = self.apply_operations(
> + app_label,
> + project_state,
> + [
> + migrations.CreateModel(
> + "Rider",
> + fields=[
> + ("pony_id", models.IntegerField()),
> + (
> + "pony",
> + models.ForeignObject(
> + f"{app_label}.Pony",
> + models.CASCADE,
> + from_fields=("pony_id",),
> + to_fields=("id",),
> + ),
> + ),
> + ],
> + ),
> + ],
> + )
> + operation = migrations.AlterField(
> + "Rider",
> + "pony",
> + models.ForeignObject(
> + f"{app_label}.Pony",
> + models.CASCADE,
> + from_fields=("pony_id",),
> + to_fields=("id",),
> + null=True,
> + ),
> + )
> + new_state = project_state.clone()
> + operation.state_forwards(app_label, new_state)
> + with self.assertNumQueries(0), connection.schema_editor() as
editor:
> + operation.database_forwards(app_label, editor,
project_state, new_state)
> +
> @skipUnlessDBFeature("supports_comments")
> def test_alter_model_table_comment(self):
> app_label = "test_almotaco"
>
> }}}
I realized that there will be a default exclude behavior, and there are 6
queries that will be executed in database setup, so I modified the use
case, and the 6 queries were not written directly.
This is my modification:https://github.com/django/django/pull/17240
--
Ticket URL: <https://code.djangoproject.com/ticket/34820#comment:14>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/0107018a7a2300ea-b8e88976-e867-4ba8-b2f2-19e730bd0518-000000%40eu-central-1.amazonses.com.