Fixed #23702 -- Fixed adding an explicit id field on SQLite.
Thanks gavinwahl for the report.
This commit is contained in:
parent
2d75515a4c
commit
92269b7b53
|
@ -75,8 +75,8 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor):
|
||||||
)
|
)
|
||||||
# Add in any altered fields
|
# Add in any altered fields
|
||||||
for (old_field, new_field) in alter_fields:
|
for (old_field, new_field) in alter_fields:
|
||||||
del body[old_field.name]
|
body.pop(old_field.name, None)
|
||||||
del mapping[old_field.column]
|
mapping.pop(old_field.column, None)
|
||||||
body[new_field.name] = new_field
|
body[new_field.name] = new_field
|
||||||
if old_field.null and not new_field.null:
|
if old_field.null and not new_field.null:
|
||||||
case_sql = "coalesce(%(col)s, %(default)s)" % {
|
case_sql = "coalesce(%(col)s, %(default)s)" % {
|
||||||
|
|
|
@ -11,3 +11,6 @@ Bugfixes
|
||||||
|
|
||||||
* Fixed migration's renaming of auto-created many-to-many tables when changing
|
* Fixed migration's renaming of auto-created many-to-many tables when changing
|
||||||
:attr:`Meta.db_table <django.db.models.Options.db_table>` (:ticket:`23630`).
|
:attr:`Meta.db_table <django.db.models.Options.db_table>` (:ticket:`23630`).
|
||||||
|
|
||||||
|
* Fixed a migration crash when adding an explicit ``id`` field to a model on
|
||||||
|
SQLite (:ticket:`23702`).
|
||||||
|
|
|
@ -490,6 +490,25 @@ class SchemaTests(TransactionTestCase):
|
||||||
else:
|
else:
|
||||||
self.fail("No FK constraint for author_id found")
|
self.fail("No FK constraint for author_id found")
|
||||||
|
|
||||||
|
def test_alter_implicit_id_to_explict(self):
|
||||||
|
"""
|
||||||
|
Should be able to convert an implicit "id" field to an explicit "id"
|
||||||
|
primary key field.
|
||||||
|
"""
|
||||||
|
with connection.schema_editor() as editor:
|
||||||
|
editor.create_model(Author)
|
||||||
|
|
||||||
|
new_field = IntegerField(primary_key=True)
|
||||||
|
new_field.set_attributes_from_name("id")
|
||||||
|
new_field.model = Author
|
||||||
|
with connection.schema_editor() as editor:
|
||||||
|
editor.alter_field(
|
||||||
|
Author,
|
||||||
|
Author._meta.get_field_by_name("id")[0],
|
||||||
|
new_field,
|
||||||
|
strict=True,
|
||||||
|
)
|
||||||
|
|
||||||
def test_rename(self):
|
def test_rename(self):
|
||||||
"""
|
"""
|
||||||
Tests simple altering of fields
|
Tests simple altering of fields
|
||||||
|
|
Loading…
Reference in New Issue