44from django .db .models .sql import Query as DjangoQuery
55
66
7- class Query ( DjangoQuery ):
7+ class ExtendedQueryMixin ( object ):
88 SUBQUERY_LOOKUPS = (
99 'exists' ,
1010 'neexists' ,
@@ -14,18 +14,22 @@ def build_lookup(self, lookups, lhs, rhs):
1414 if lookups and lookups [- 1 ] in self .SUBQUERY_LOOKUPS :
1515 if not isinstance (rhs , Exists ):
1616 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 )
1919
2020 def prepare_lookup_value (self , value , lookups , can_reuse , allow_joins = True ):
2121 if lookups and lookups [- 1 ] in self .SUBQUERY_LOOKUPS :
2222 value = value .resolve_expression (self , allow_joins = True , reuse = None , summarize = False )
2323 return value , lookups , []
24- return super (Query , self ).prepare_lookup_value (
24+ return super (ExtendedQueryMixin , self ).prepare_lookup_value (
2525 value , lookups , can_reuse , allow_joins = allow_joins )
2626
2727 def solve_lookup_type (self , lookup ):
2828 lookup_splitted = lookup .split (LOOKUP_SEP )
2929 if lookup_splitted and lookup_splitted [- 1 ] in self .SUBQUERY_LOOKUPS :
3030 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