code: def order_by(self, *props):
          
          should_remove = len(props) == 1 and props[0] is None
          if not hasattr(self, '_order_by') or should_remove:
              self._order_by = []
              if should_remove:
                  return self
          if '?' in props:
              self._order_by.append('?')
          else:
              for prop in props:
                  prop = prop.strip()
                  if prop.startswith('-'):
                      prop = prop[1:]
                      desc = True
                  else:
                      desc = False
  
                  if prop not in self.source_class.defined_properties(rels=False):
                      raise ValueError("No such property {0} on {1}".format(
                          prop, self.source_class.__name__))
  
                  property_obj = getattr(self.source_class, prop)
                  if isinstance(property_obj, AliasProperty):
                      prop = property_obj.aliased_to()
  
                  self._order_by.append(prop + (' DESC' if desc else ''))
  
          return self
docs: Order by properties. Prepend with minus to do descending. Pass None to
          remove ordering.