diff options
| author | Andrew Godwin <andrew@aeracode.org> | 2013-06-27 14:44:21 +0100 |
|---|---|---|
| committer | Andrew Godwin <andrew@aeracode.org> | 2013-06-27 14:44:21 +0100 |
| commit | 99b467f272da91b8894dc90d793d8d2c40b78d8c (patch) | |
| tree | e0a2fb824f41113fcbf0996a6b3185848ac305ce /tests/foreign_object | |
| parent | e26b589b8cd2c46c0e6af360abaacdb2fb0af27d (diff) | |
Add related_query_name to ForeignKey/M2M. Refs #20244
Diffstat (limited to 'tests/foreign_object')
| -rw-r--r-- | tests/foreign_object/models.py | 8 | ||||
| -rw-r--r-- | tests/foreign_object/tests.py | 21 |
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. |
