diff options
| author | Tim Graham <timograham@gmail.com> | 2015-06-01 17:06:54 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-06-02 09:15:08 -0400 |
| commit | 8911d2e20fc5f4fc7b0274594813ed0b1ad8bc6b (patch) | |
| tree | c8668e413443e75992c892e85b9d29d9d90475ad /tests | |
| parent | 3b41850adcce29b0c2e64d9c6f3d34ffcc7d750b (diff) | |
[1.8.x] Fixed #24892 -- Fixed quoting of SQL when renaming a field to AutoField in PostgreSQL
Backport of 5ab86809832726957dd6f0eb8e17a461f0a9be84 from master
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/schema/models.py | 8 | ||||
| -rw-r--r-- | tests/schema/tests.py | 28 |
2 files changed, 30 insertions, 6 deletions
diff --git a/tests/schema/models.py b/tests/schema/models.py index d50caf9a98..ab5dd6087b 100644 --- a/tests/schema/models.py +++ b/tests/schema/models.py @@ -80,6 +80,14 @@ class BookWithSlug(models.Model): db_table = "schema_book" +class IntegerPK(models.Model): + i = models.IntegerField(primary_key=True) + + class Meta: + apps = new_apps + db_table = "INTEGERPK" # uppercase to ensure proper quoting + + class Note(models.Model): info = models.TextField() diff --git a/tests/schema/tests.py b/tests/schema/tests.py index bc007bd451..05cb26a414 100644 --- a/tests/schema/tests.py +++ b/tests/schema/tests.py @@ -8,8 +8,8 @@ from django.db import ( ) from django.db.models import Model from django.db.models.fields import ( - BigIntegerField, BinaryField, BooleanField, CharField, DateTimeField, - IntegerField, PositiveIntegerField, SlugField, TextField, + AutoField, BigIntegerField, BinaryField, BooleanField, CharField, + DateTimeField, IntegerField, PositiveIntegerField, SlugField, TextField, ) from django.db.models.fields.related import ( ForeignKey, ManyToManyField, OneToOneField, @@ -20,8 +20,8 @@ from django.test import TransactionTestCase, skipIfDBFeature from .fields import CustomManyToManyField, InheritedManyToManyField from .models import ( Author, AuthorWithDefaultHeight, AuthorWithEvenLongerName, Book, BookWeak, - BookWithLongName, BookWithO2O, BookWithSlug, Note, NoteRename, Tag, - TagIndexed, TagM2MTest, TagUniqueRename, Thing, UniqueTest, new_apps, + BookWithLongName, BookWithO2O, BookWithSlug, IntegerPK, Note, NoteRename, + Tag, TagIndexed, TagM2MTest, TagUniqueRename, Thing, UniqueTest, new_apps, ) @@ -38,8 +38,8 @@ class SchemaTests(TransactionTestCase): models = [ Author, AuthorWithDefaultHeight, AuthorWithEvenLongerName, Book, - BookWeak, BookWithLongName, BookWithO2O, BookWithSlug, Note, Tag, - TagIndexed, TagM2MTest, TagUniqueRename, Thing, UniqueTest, + BookWeak, BookWithLongName, BookWithO2O, BookWithSlug, IntegerPK, Note, + Tag, TagIndexed, TagM2MTest, TagUniqueRename, Thing, UniqueTest, ] # Utility functions @@ -729,6 +729,22 @@ class SchemaTests(TransactionTestCase): # field which drops the id sequence, at least on PostgreSQL. Author.objects.create(name='Foo') + def test_alter_int_pk_to_autofield_pk(self): + """ + Should be able to rename an IntegerField(primary_key=True) to + AutoField(primary_key=True). + """ + with connection.schema_editor() as editor: + editor.create_model(IntegerPK) + + old_field = IntegerPK._meta.get_field('i') + new_field = AutoField(primary_key=True) + new_field.model = IntegerPK + new_field.set_attributes_from_name('i') + + with connection.schema_editor() as editor: + editor.alter_field(IntegerPK, old_field, new_field, strict=True) + def test_rename(self): """ Tests simple altering of fields |
