mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #23702 -- Fixed adding an explicit id field on SQLite.
Thanks gavinwahl for the report.
This commit is contained in:
		| @@ -75,8 +75,8 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor): | ||||
|                 ) | ||||
|         # Add in any altered fields | ||||
|         for (old_field, new_field) in alter_fields: | ||||
|             del body[old_field.name] | ||||
|             del mapping[old_field.column] | ||||
|             body.pop(old_field.name, None) | ||||
|             mapping.pop(old_field.column, None) | ||||
|             body[new_field.name] = new_field | ||||
|             if old_field.null and not new_field.null: | ||||
|                 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 | ||||
|   :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: | ||||
|             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): | ||||
|         """ | ||||
|         Tests simple altering of fields | ||||
|   | ||||
		Reference in New Issue
	
	Block a user