4
4
from django .db .models .sql import Query as DjangoQuery
5
5
6
6
7
- class Query ( DjangoQuery ):
7
+ class ExtendedQueryMixin ( object ):
8
8
SUBQUERY_LOOKUPS = (
9
9
'exists' ,
10
10
'neexists' ,
@@ -14,18 +14,22 @@ def build_lookup(self, lookups, lhs, rhs):
14
14
if lookups and lookups [- 1 ] in self .SUBQUERY_LOOKUPS :
15
15
if not isinstance (rhs , Exists ):
16
16
raise FieldError ("Value is not Subquery instance." )
17
- return super (Query , self ).build_lookup (['exact' ], rhs , not lookups [- 1 ].startswith ('ne' ))
18
- return super (Query , self ).build_lookup (lookups , lhs , rhs )
17
+ return super (ExtendedQueryMixin , self ).build_lookup (['exact' ], rhs , not lookups [- 1 ].startswith ('ne' ))
18
+ return super (ExtendedQueryMixin , self ).build_lookup (lookups , lhs , rhs )
19
19
20
20
def prepare_lookup_value (self , value , lookups , can_reuse , allow_joins = True ):
21
21
if lookups and lookups [- 1 ] in self .SUBQUERY_LOOKUPS :
22
22
value = value .resolve_expression (self , allow_joins = True , reuse = None , summarize = False )
23
23
return value , lookups , []
24
- return super (Query , self ).prepare_lookup_value (
24
+ return super (ExtendedQueryMixin , self ).prepare_lookup_value (
25
25
value , lookups , can_reuse , allow_joins = allow_joins )
26
26
27
27
def solve_lookup_type (self , lookup ):
28
28
lookup_splitted = lookup .split (LOOKUP_SEP )
29
29
if lookup_splitted and lookup_splitted [- 1 ] in self .SUBQUERY_LOOKUPS :
30
30
return lookup_splitted , (), True # No JOIN
31
- return super (Query , self ).solve_lookup_type (lookup )
31
+ return super (ExtendedQueryMixin , self ).solve_lookup_type (lookup )
32
+
33
+
34
+ class Query (ExtendedQueryMixin , DjangoQuery ):
35
+ pass
0 commit comments