summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAlbert Wang <albertyw@mit.edu>2013-09-29 15:56:04 -0400
committerTim Graham <timograham@gmail.com>2014-02-15 09:47:32 -0500
commit8bbdcc76e4a84cde92b8dbfd01581d098bd2187d (patch)
tree4fa2fa5c3e2b10b9c9c09f8c0faaf04520e4d250 /tests
parent4d4e0ea461e381b437c3e585b19f2f6e24e2f645 (diff)
Fixed #19299 -- Fixed Nullification of Foreign Keys To CharFields
Thanks tunixman for the report and Baptiste Mispelon and Shai Berger for reviews.
Diffstat (limited to 'tests')
-rw-r--r--tests/model_fields/models.py9
-rw-r--r--tests/model_fields/tests.py15
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):