Replace instance_of OR query with IN statement

This commit is contained in:
Diederik van der Boor
2018-08-24 11:16:30 +02:00
parent 3d014a482c
commit 9042fdd689
3 changed files with 35 additions and 21 deletions
+10 -1
View File
@@ -1,12 +1,13 @@
import re
import uuid
import django
from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.db.models import Case, Count, Q, When
from django.test import TestCase, TransactionTestCase
from django.utils import six
from polymorphic import query_translate
from polymorphic.managers import PolymorphicManager
from polymorphic.models import PolymorphicTypeUndefined
from polymorphic.tests.models import (
@@ -343,6 +344,14 @@ class PolymorphicTests(TransactionTestCase):
ordered=False,
)
def test_create_instanceof_q(self):
q = query_translate.create_instanceof_q([Model2B])
expected = sorted([
ContentType.objects.get_for_model(m).pk
for m in [Model2B, Model2C, Model2D]
])
self.assertEqual(dict(q.children), dict(polymorphic_ctype__in=expected))
def test_base_manager(self):
def base_manager(model):
return (