Skip to content

Commit 3f1e104

Browse files
Merge pull request #106 from uncovertruth/feature/queryset_as_mixin
QuerySet class as a mixin
2 parents eeb6eeb + a8198cf commit 3f1e104

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

lookup_extensions/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
__author__ = """UNCOVER TRUTH Inc."""
44
__email__ = '[email protected]'
5-
__version__ = '0.1.0'
5+
__version__ = '0.1.1'
66

77
default_app_config = 'lookup_extensions.apps.LookupExtensionsConfig'

lookup_extensions/sql.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from 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

Comments
 (0)