diff --git a/django/db/models/query.py b/django/db/models/query.py
index 5b9f504..a6b8f9f 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -553,14 +553,16 @@ class QuerySet(object):
         """
         self.query.select_related = other.query.select_related
 
-    def order_by(self, *field_names):
+    def order_by(self, *field_names, **kwargs):
         """
         Returns a new QuerySet instance with the ordering changed.
         """
+        # we use **kwargs because python can't do *args, reset=True :(
         assert self.query.can_filter(), \
                 "Cannot reorder a query once a slice has been taken."
         obj = self._clone()
-        obj.query.clear_ordering()
+        if kwargs.get('reset', True):
+            obj.query.clear_ordering()
         obj.query.add_ordering(*field_names)
         return obj
 
diff --git a/tests/modeltests/ordering/models.py b/tests/modeltests/ordering/models.py
index a53d93c..fbd0b88 100644
--- a/tests/modeltests/ordering/models.py
+++ b/tests/modeltests/ordering/models.py
@@ -24,6 +24,13 @@ class Article(models.Model):
     def __unicode__(self):
         return self.headline
 
+class Value(models.Model):
+    name = models.CharField(max_length=100)
+    count = models.IntegerField()
+    
+    def __unicode__(self):
+        return "%s - %s" % (self.name, self.count)
+
 __test__ = {'API_TESTS':"""
 # Create a couple of Articles.
 >>> from datetime import datetime
@@ -86,4 +93,13 @@ __test__ = {'API_TESTS':"""
 >>> Article.objects.extra(select={'order': 'pub_date'}, order_by=['order', 'headline'])
 [<Article: Article 1>, <Article: Article 2>, <Article: Article 3>, <Article: Article 4>]
 
+# using the reset = False kwarg on order_by shouldn't reset ordering
+>>> _ = Value.objects.create(name='Apple', count=3)
+>>> _ = Value.objects.create(name='Apple', count=5)
+>>> _ = Value.objects.create(name='Apple', count=4)
+>>> _ = Value.objects.create(name='Bannana', count=4)
+>>> qs = Value.objects.order_by('-count')
+>>> qs.order_by('-name', reset=False)
+[<Value: Apple - 5>, <Value: Bannana - 4>, <Value: Apple - 4>, <Value: Apple - 3>]
+
 """}
