Fixes Django 1.9 compatibility.

This commit is contained in:
Bertrand Bordage 2015-12-18 15:56:28 +01:00
parent 224350fedb
commit 885d68b008

View file

@ -7,6 +7,7 @@ from hashlib import sha1
from time import time
from uuid import UUID
from django import VERSION as django_version
from django.db import connections
from django.db.models.sql import Query
from django.db.models.sql.where import ExtraWhere, SubqueryConstraint
@ -18,6 +19,9 @@ from .signals import post_invalidation
from .transaction import AtomicCache
DJANGO_LTE_1_8 = django_version <= (1, 8)
class UncachableQuery(Exception):
pass
@ -124,8 +128,10 @@ def _get_tables(query, db_alias):
tables = set(query.table_map)
tables.add(query.get_meta().db_table)
subquery_constraints = _find_subqueries(query.where.children
+ query.having.children)
children = query.where.children
if DJANGO_LTE_1_8:
children += query.having.children
subquery_constraints = _find_subqueries(children)
for subquery in subquery_constraints:
tables.update(_get_tables(subquery, db_alias))
if query.extra_select or hasattr(query, 'subquery') \