mirror of
https://github.com/django/django.git
synced 2025-08-04 02:48:35 +00:00
Fixed #35991 -- Fixed crash when adding non-nullable field after renaming part of CompositePrimaryKey on SQLite.
This commit is contained in:
parent
733d3998e2
commit
c534b6c493
2 changed files with 46 additions and 0 deletions
|
@ -3375,6 +3375,42 @@ class OperationTests(OperationTestBase):
|
|||
)
|
||||
self.assertIndexExists("test_rnflit_pony", ["weight", "pink"])
|
||||
|
||||
def test_rename_field_add_non_nullable_field_with_composite_pk(self):
|
||||
app_label = "test_rnfafnnwcpk"
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="Release",
|
||||
fields=[
|
||||
(
|
||||
"pk",
|
||||
models.CompositePrimaryKey("version", "name", primary_key=True),
|
||||
),
|
||||
("version", models.IntegerField()),
|
||||
("name", models.CharField(max_length=20)),
|
||||
],
|
||||
),
|
||||
]
|
||||
project_state = self.apply_operations(app_label, ProjectState(), operations)
|
||||
new_state = project_state.clone()
|
||||
# Rename field used by CompositePrimaryKey.
|
||||
operation = migrations.RenameField("Release", "name", "renamed_field")
|
||||
operation.state_forwards(app_label, new_state)
|
||||
with connection.schema_editor() as editor:
|
||||
operation.database_forwards(app_label, editor, project_state, new_state)
|
||||
self.assertColumnExists(f"{app_label}_release", "renamed_field")
|
||||
project_state = new_state
|
||||
new_state = new_state.clone()
|
||||
# Add non-nullable field. Table is rebuilt on SQLite.
|
||||
operation = migrations.AddField(
|
||||
model_name="Release",
|
||||
name="new_non_nullable_field",
|
||||
field=models.CharField(default="x", max_length=20),
|
||||
)
|
||||
operation.state_forwards(app_label, new_state)
|
||||
with connection.schema_editor() as editor:
|
||||
operation.database_forwards(app_label, editor, project_state, new_state)
|
||||
self.assertColumnExists(f"{app_label}_release", "new_non_nullable_field")
|
||||
|
||||
def test_rename_field_with_db_column(self):
|
||||
project_state = self.apply_operations(
|
||||
"test_rfwdbc",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue