summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/generic_relations_regress/models.py9
-rw-r--r--tests/generic_relations_regress/tests.py20
2 files changed, 28 insertions, 1 deletions
diff --git a/tests/generic_relations_regress/models.py b/tests/generic_relations_regress/models.py
index 2795471f7f..206dbe02b0 100644
--- a/tests/generic_relations_regress/models.py
+++ b/tests/generic_relations_regress/models.py
@@ -122,3 +122,12 @@ class Tag(models.Model):
class Board(models.Model):
name = models.CharField(primary_key=True, max_length=15)
+
+class HasLinks(models.Model):
+ links = generic.GenericRelation(Link)
+
+ class Meta:
+ abstract = True
+
+class HasLinkThing(HasLinks):
+ pass
diff --git a/tests/generic_relations_regress/tests.py b/tests/generic_relations_regress/tests.py
index 474113584a..519ca203a9 100644
--- a/tests/generic_relations_regress/tests.py
+++ b/tests/generic_relations_regress/tests.py
@@ -4,7 +4,7 @@ from django.test import TestCase, skipIfDBFeature
from .models import (Address, Place, Restaurant, Link, CharLink, TextLink,
Person, Contact, Note, Organization, OddRelation1, OddRelation2, Company,
- Developer, Team, Guild, Tag, Board)
+ Developer, Team, Guild, Tag, Board, HasLinkThing)
class GenericRelationTests(TestCase):
@@ -135,3 +135,21 @@ class GenericRelationTests(TestCase):
b1 = Board.objects.create(name='')
tag = Tag(label='VP', content_object=b1)
tag.save()
+
+ def test_ticket_20378(self):
+ hs1 = HasLinkThing.objects.create()
+ hs2 = HasLinkThing.objects.create()
+ l1 = Link.objects.create(content_object=hs1)
+ l2 = Link.objects.create(content_object=hs2)
+ self.assertQuerysetEqual(
+ HasLinkThing.objects.filter(links=l1),
+ [hs1], lambda x: x)
+ self.assertQuerysetEqual(
+ HasLinkThing.objects.filter(links=l2),
+ [hs2], lambda x: x)
+ self.assertQuerysetEqual(
+ HasLinkThing.objects.exclude(links=l2),
+ [hs1], lambda x: x)
+ self.assertQuerysetEqual(
+ HasLinkThing.objects.exclude(links=l1),
+ [hs2], lambda x: x)