Returns a new QuerySet instance with the ordering changed.

def order_by(self, field_name=None):
        """
        Returns a new QuerySet instance with the ordering changed.
        """
        assert self.query.can_filter(), "Cannot reorder a query once a slice has been taken."

        clone = self._clone()
        clone.query.clear_ordering()

        if field_name is not None:
            clone.query.add_ordering(field_name)

        return clone