Made Query.clear_ordering force_empty arg mandatory

Previously it was possible to call clear_ordering without the
force_empty argument. The result was that the query was still ordered
by model's meta ordering if that was defined. By making the arg
mandatory it will be easier to spot possible errors caused by assuming
clear_ordering will remove all ordering.

Thanks to Dylan Klomparens for the suggestion. Refs #19720.
This commit is contained in:
Anssi Kääriäinen 2013-02-10 20:52:52 +02:00
parent af2bb17470
commit 5cc0f5f8c1
2 changed files with 3 additions and 3 deletions

View File

@ -500,7 +500,7 @@ class QuerySet(object):
"Cannot change a query once a slice has been taken." "Cannot change a query once a slice has been taken."
obj = self._clone() obj = self._clone()
obj.query.set_limits(high=1) obj.query.set_limits(high=1)
obj.query.clear_ordering() obj.query.clear_ordering(force_empty=True)
obj.query.add_ordering('%s%s' % (direction, order_by)) obj.query.add_ordering('%s%s' % (direction, order_by))
return obj.get() return obj.get()
@ -793,7 +793,7 @@ class QuerySet(object):
assert self.query.can_filter(), \ assert self.query.can_filter(), \
"Cannot reorder a query once a slice has been taken." "Cannot reorder a query once a slice has been taken."
obj = self._clone() obj = self._clone()
obj.query.clear_ordering() obj.query.clear_ordering(force_empty=False)
obj.query.add_ordering(*field_names) obj.query.add_ordering(*field_names)
return obj return obj

View File

@ -1638,7 +1638,7 @@ class Query(object):
else: else:
self.default_ordering = False self.default_ordering = False
def clear_ordering(self, force_empty=False): def clear_ordering(self, force_empty):
""" """
Removes any ordering settings. If 'force_empty' is True, there will be Removes any ordering settings. If 'force_empty' is True, there will be
no ordering in the resulting query (not even the model's default). no ordering in the resulting query (not even the model's default).