Adds an order by clause to the query by adding a ``Sorter`` instance to the query's
        sorters list

        :type field: str or dict or :class:`Field <querybuilder.fields.Field>`
        :param field: This can be a string of a field name, a dict of {'alias': field}, or
            a ``Field`` instance

        :type table: str or dict or :class:`Table <querybuilder.table.Table>`
        :param table: Optional. This can be a string of a table name, a dict of {'alias': table}, or
            a ``Table`` instance. A table only needs to be supplied in more complex queries where
            the field name is ambiguous.

        :type desc: bool
        :param desc: Set to True to sort by this field in DESC order or False to sort by this field
            in ASC order. Defaults to False.

        :rtype: :class:`Query <querybuilder.query.Query>`
        :return: self

def order_by(self, field=None, table=None, desc=False):
        """
        Adds an order by clause to the query by adding a ``Sorter`` instance to the query's
        sorters list

        :type field: str or dict or :class:`Field <querybuilder.fields.Field>`
        :param field: This can be a string of a field name, a dict of {'alias': field}, or
            a ``Field`` instance

        :type table: str or dict or :class:`Table <querybuilder.table.Table>`
        :param table: Optional. This can be a string of a table name, a dict of {'alias': table}, or
            a ``Table`` instance. A table only needs to be supplied in more complex queries where
            the field name is ambiguous.

        :type desc: bool
        :param desc: Set to True to sort by this field in DESC order or False to sort by this field
            in ASC order. Defaults to False.

        :rtype: :class:`Query <querybuilder.query.Query>`
        :return: self
        """
        self.sorters.append(Sorter(
            field=field,
            table=table,
            desc=desc
        ))
        return self