summaryrefslogtreecommitdiff
path: root/django/db/models/sql/query.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/db/models/sql/query.py')
-rw-r--r--django/db/models/sql/query.py19
1 files changed, 13 insertions, 6 deletions
diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py
index ad82b167a6..264e29eaf3 100644
--- a/django/db/models/sql/query.py
+++ b/django/db/models/sql/query.py
@@ -431,13 +431,9 @@ class Query(object):
def has_results(self, using):
q = self.clone()
+ q.clear_select_clause()
q.add_extra({'a': 1}, None, None, None, None, None)
- q.select = []
- q.select_fields = []
- q.default_cols = False
- q.select_related = False
- q.set_extra_mask(('a',))
- q.set_aggregate_mask(())
+ q.set_extra_mask(['a'])
q.clear_ordering(True)
q.set_limits(high=1)
compiler = q.get_compiler(using=using)
@@ -1626,6 +1622,17 @@ class Query(object):
"""
return not self.low_mark and self.high_mark is None
+ def clear_select_clause(self):
+ """
+ Removes all fields from SELECT clause.
+ """
+ self.select = []
+ self.select_fields = []
+ self.default_cols = False
+ self.select_related = False
+ self.set_extra_mask(())
+ self.set_aggregate_mask(())
+
def clear_select_fields(self):
"""
Clears the list of fields to select (but not extra_select columns).