diff --git a/.gitignore b/.gitignore index e63dffc7..7d2422d1 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ build/ dist/ docs/_build/ htmlcov/ +venv/ diff --git a/polymorphic/tests.py b/polymorphic/tests.py index 9c2cb3d4..083a93c9 100644 --- a/polymorphic/tests.py +++ b/polymorphic/tests.py @@ -428,6 +428,14 @@ class DateModel(PolymorphicModel): date = models.DateTimeField() +class PrefetchRelatedA(PolymorphicModel): + pass + + +class PrefetchRelatedB(models.Model): + links = models.ManyToManyField(PrefetchRelatedA) + + class PolymorphicTests(TestCase): """ The test suite @@ -1325,6 +1333,17 @@ def func(): # Ensure no queries are made using the default database. self.assertNumQueries(0, func) + def test_prefetch_related_behaves_normally_with_polymorphic_model(self): + """See #68""" + b1 = PrefetchRelatedB.objects.create() + b2 = PrefetchRelatedB.objects.create() + a = b1.links.create() + b2.links.add(a) + + qs = PrefetchRelatedB.objects.prefetch_related('links') + for obj in qs: + self.assertEqual(len(obj.links.all()), 1) + def qrepr(data): """