diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/model_fields/models.py | 9 | ||||
| -rw-r--r-- | tests/model_fields/tests.py | 15 |
2 files changed, 22 insertions, 2 deletions
diff --git a/tests/model_fields/models.py b/tests/model_fields/models.py index 3651d99ad8..e110578ce9 100644 --- a/tests/model_fields/models.py +++ b/tests/model_fields/models.py @@ -72,12 +72,21 @@ class BooleanModel(models.Model): string = models.CharField(max_length=10, default='abc') +class PrimaryKeyCharModel(models.Model): + string = models.CharField(max_length=10, primary_key=True) + + class FksToBooleans(models.Model): """Model wih FKs to models with {Null,}BooleanField's, #15040""" bf = models.ForeignKey(BooleanModel) nbf = models.ForeignKey(NullBooleanModel) +class FkToChar(models.Model): + """Model with FK to a model with a CharField primary key, #19299""" + out = models.ForeignKey(PrimaryKeyCharModel) + + class RenamedField(models.Model): modelname = models.IntegerField(name="fieldname", choices=((1, 'One'),)) diff --git a/tests/model_fields/tests.py b/tests/model_fields/tests.py index 45ffe44e7a..54c13dd0ee 100644 --- a/tests/model_fields/tests.py +++ b/tests/model_fields/tests.py @@ -22,8 +22,8 @@ from django.utils.functional import lazy from .models import ( Foo, Bar, Whiz, BigD, BigS, BigInt, Post, NullBooleanModel, - BooleanModel, DataModel, Document, RenamedField, - VerboseNameField, FksToBooleans) + BooleanModel, PrimaryKeyCharModel, DataModel, Document, RenamedField, + VerboseNameField, FksToBooleans, FkToChar) class BasicFieldTests(test.TestCase): @@ -146,6 +146,17 @@ class ForeignKeyTests(test.TestCase): b = Bar.objects.create(b="bcd") self.assertEqual(b.a, a) + @test.skipIfDBFeature('interprets_empty_strings_as_nulls') + def test_empty_string_fk(self): + """ + Test that foreign key values to empty strings don't get converted + to None (#19299) + """ + char_model_empty = PrimaryKeyCharModel.objects.create(string='') + fk_model_empty = FkToChar.objects.create(out=char_model_empty) + fk_model_empty = FkToChar.objects.select_related('out').get(id=fk_model_empty.pk) + self.assertEqual(fk_model_empty.out, char_model_empty) + class DateTimeFieldTests(unittest.TestCase): def test_datetimefield_to_python_usecs(self): |
