summaryrefslogtreecommitdiff
path: root/tests/foreign_object
diff options
context:
space:
mode:
authorAndrew Godwin <andrew@aeracode.org>2013-06-27 14:44:21 +0100
committerAndrew Godwin <andrew@aeracode.org>2013-06-27 14:44:21 +0100
commit99b467f272da91b8894dc90d793d8d2c40b78d8c (patch)
treee0a2fb824f41113fcbf0996a6b3185848ac305ce /tests/foreign_object
parente26b589b8cd2c46c0e6af360abaacdb2fb0af27d (diff)
Add related_query_name to ForeignKey/M2M. Refs #20244
Diffstat (limited to 'tests/foreign_object')
-rw-r--r--tests/foreign_object/models.py8
-rw-r--r--tests/foreign_object/tests.py21
2 files changed, 28 insertions, 1 deletions
diff --git a/tests/foreign_object/models.py b/tests/foreign_object/models.py
index 2d02b5624c..eee8091a15 100644
--- a/tests/foreign_object/models.py
+++ b/tests/foreign_object/models.py
@@ -150,3 +150,11 @@ class ArticleTranslation(models.Model):
class Meta:
unique_together = ('article', 'lang')
ordering = ('active_translation__title',)
+
+class ArticleTag(models.Model):
+ article = models.ForeignKey(Article, related_name="tags", related_query_name="tag")
+ name = models.CharField(max_length=255)
+
+class ArticleIdea(models.Model):
+ articles = models.ManyToManyField(Article, related_name="ideas", related_query_name="idea_things")
+ name = models.CharField(max_length=255)
diff --git a/tests/foreign_object/tests.py b/tests/foreign_object/tests.py
index 69636ee49b..670fc94dc5 100644
--- a/tests/foreign_object/tests.py
+++ b/tests/foreign_object/tests.py
@@ -1,9 +1,10 @@
import datetime
from operator import attrgetter
-from .models import Country, Person, Group, Membership, Friendship, Article, ArticleTranslation
+from .models import Country, Person, Group, Membership, Friendship, Article, ArticleTranslation, ArticleTag, ArticleIdea
from django.test import TestCase
from django.utils.translation import activate
+from django.core.exceptions import FieldError
from django import forms
class MultiColumnFKTests(TestCase):
@@ -321,6 +322,24 @@ class MultiColumnFKTests(TestCase):
with self.assertRaisesMessage(Article.DoesNotExist, 'ArticleTranslation has no article'):
referrer.article
+ def test_foreign_key_related_query_name(self):
+ a1 = Article.objects.create(pub_date=datetime.date.today())
+ ArticleTag.objects.create(article=a1, name="foo")
+ self.assertEqual(Article.objects.filter(tag__name="foo").count(), 1)
+ self.assertEqual(Article.objects.filter(tag__name="bar").count(), 0)
+ with self.assertRaises(FieldError):
+ Article.objects.filter(tags__name="foo")
+
+ def test_many_to_many_related_query_name(self):
+ a1 = Article.objects.create(pub_date=datetime.date.today())
+ i1 = ArticleIdea.objects.create(name="idea1")
+ a1.ideas.add(i1)
+ self.assertEqual(Article.objects.filter(idea_things__name="idea1").count(), 1)
+ self.assertEqual(Article.objects.filter(idea_things__name="idea2").count(), 0)
+ with self.assertRaises(FieldError):
+ Article.objects.filter(ideas__name="idea1")
+
+
class FormsTests(TestCase):
# ForeignObjects should not have any form fields, currently the user needs
# to manually deal with the foreignobject relation.