summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLuke Plant <L.Plant.98@cantab.net>2012-10-29 13:40:32 +0000
committerLuke Plant <L.Plant.98@cantab.net>2012-10-29 14:31:54 +0000
commit4c4d08502cbef6e0ed85470b2a5aade7fafa099f (patch)
tree9b4da677d29b45326d4c9de4f786a65b0ed2ce66 /tests
parent4ea8105120121c7ef0d3dd6eb23f2bf5f55b496a (diff)
Fixed #17991 - prefetch_related fails with GenericRelation and varchar ID field
Thanks to okke@formsma.nl for the report, and carmandrew@gmail.com for the tests.
Diffstat (limited to 'tests')
-rw-r--r--tests/modeltests/prefetch_related/models.py10
-rw-r--r--tests/modeltests/prefetch_related/tests.py10
2 files changed, 19 insertions, 1 deletions
diff --git a/tests/modeltests/prefetch_related/models.py b/tests/modeltests/prefetch_related/models.py
index 85488f0879..e58997d200 100644
--- a/tests/modeltests/prefetch_related/models.py
+++ b/tests/modeltests/prefetch_related/models.py
@@ -125,6 +125,10 @@ class TaggedItem(models.Model):
related_name='taggeditem_set3')
created_by_fkey = models.PositiveIntegerField(null=True)
created_by = generic.GenericForeignKey('created_by_ct', 'created_by_fkey',)
+ favorite_ct = models.ForeignKey(ContentType, null=True,
+ related_name='taggeditem_set4')
+ favorite_fkey = models.CharField(max_length=64, null=True)
+ favorite = generic.GenericForeignKey('favorite_ct', 'favorite_fkey')
def __str__(self):
return self.tag
@@ -132,7 +136,11 @@ class TaggedItem(models.Model):
class Bookmark(models.Model):
url = models.URLField()
- tags = generic.GenericRelation(TaggedItem)
+ tags = generic.GenericRelation(TaggedItem, related_name='bookmarks')
+ favorite_tags = generic.GenericRelation(TaggedItem,
+ content_type_field='favorite_ct',
+ object_id_field='favorite_fkey',
+ related_name='favorite_bookmarks')
class Comment(models.Model):
diff --git a/tests/modeltests/prefetch_related/tests.py b/tests/modeltests/prefetch_related/tests.py
index 614a5fc1d6..e81560f01f 100644
--- a/tests/modeltests/prefetch_related/tests.py
+++ b/tests/modeltests/prefetch_related/tests.py
@@ -319,6 +319,16 @@ class GenericRelationTests(TestCase):
for t in b.tags.all()]
self.assertEqual(sorted(tags), ["django", "python"])
+ def test_charfield_GFK(self):
+ b = Bookmark.objects.create(url='http://www.djangoproject.com/')
+ t1 = TaggedItem.objects.create(content_object=b, tag='django')
+ t2 = TaggedItem.objects.create(content_object=b, favorite=b, tag='python')
+
+ with self.assertNumQueries(3):
+ bookmark = Bookmark.objects.filter(pk=b.pk).prefetch_related('tags', 'favorite_tags')[0]
+ self.assertEqual(sorted([i.tag for i in bookmark.tags.all()]), ["django", "python"])
+ self.assertEqual([i.tag for i in bookmark.favorite_tags.all()], ["python"])
+
class MultiTableInheritanceTest(TestCase):