From 885d68b0089fb17976c8100e1a6a608993040ff0 Mon Sep 17 00:00:00 2001 From: Bertrand Bordage Date: Fri, 18 Dec 2015 15:56:28 +0100 Subject: [PATCH] Fixes Django 1.9 compatibility. --- cachalot/utils.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/cachalot/utils.py b/cachalot/utils.py index 6b18496..881262e 100644 --- a/cachalot/utils.py +++ b/cachalot/utils.py @@ -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') \