From ef9f109013adc6e140c1a71d874aa88e893657b7 Mon Sep 17 00:00:00 2001 From: Marc Tamlyn Date: Tue, 15 Jul 2014 12:30:34 +0100 Subject: Fixed #22962 -- Default values for ArrayField with migrations. Fields normally try to force the default value to a string. As translatable strings are not valid default values for ArrayField, we can remove this behaviour which was causing issues with some migrations. Thanks to @schinckel for the report. --- .../array_default_migrations/0001_initial.py | 64 ++++++++++++++++++++++ .../0002_integerarraymodel_field_2.py | 21 +++++++ .../array_default_migrations/__init__.py | 0 3 files changed, 85 insertions(+) create mode 100644 tests/postgres_tests/array_default_migrations/0001_initial.py create mode 100644 tests/postgres_tests/array_default_migrations/0002_integerarraymodel_field_2.py create mode 100644 tests/postgres_tests/array_default_migrations/__init__.py (limited to 'tests/postgres_tests/array_default_migrations') diff --git a/tests/postgres_tests/array_default_migrations/0001_initial.py b/tests/postgres_tests/array_default_migrations/0001_initial.py new file mode 100644 index 0000000000..0b7eb77c3d --- /dev/null +++ b/tests/postgres_tests/array_default_migrations/0001_initial.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations +import django.contrib.postgres.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='CharArrayModel', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('field', django.contrib.postgres.fields.ArrayField(models.CharField(max_length=10), size=None)), + ], + options={ + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='DateTimeArrayModel', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('field', django.contrib.postgres.fields.ArrayField(models.DateTimeField(), size=None)), + ], + options={ + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='IntegerArrayModel', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('field', django.contrib.postgres.fields.ArrayField(models.IntegerField(), size=None)), + ], + options={ + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='NestedIntegerArrayModel', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('field', django.contrib.postgres.fields.ArrayField(django.contrib.postgres.fields.ArrayField(models.IntegerField(), size=None), size=None)), + ], + options={ + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='NullableIntegerArrayModel', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('field', django.contrib.postgres.fields.ArrayField(models.IntegerField(), size=None, null=True, blank=True)), + ], + options={ + }, + bases=(models.Model,), + ), + ] diff --git a/tests/postgres_tests/array_default_migrations/0002_integerarraymodel_field_2.py b/tests/postgres_tests/array_default_migrations/0002_integerarraymodel_field_2.py new file mode 100644 index 0000000000..074c2f70e5 --- /dev/null +++ b/tests/postgres_tests/array_default_migrations/0002_integerarraymodel_field_2.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations +import django.contrib.postgres.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('postgres_tests', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='integerarraymodel', + name='field_2', + field=django.contrib.postgres.fields.ArrayField(models.IntegerField(), default=[], size=None), + preserve_default=False, + ), + ] diff --git a/tests/postgres_tests/array_default_migrations/__init__.py b/tests/postgres_tests/array_default_migrations/__init__.py new file mode 100644 index 0000000000..e69de29bb2 -- cgit v1.3