Can I remove ORDER BY from a Django ORM query?

后端 未结 3 1617
轻奢々
轻奢々 2021-01-17 08:47

It seems like Django by default adds ORDER BY to queries. Can I clear it?

from slowstagram.models imp         


        
3条回答
  •  生来不讨喜
    2021-01-17 09:12

    Actually, just do a query.order_by() is enough.

    This is specified in the docs although it is a bit hard to find. The docs say:

    If you don’t want any ordering to be applied to a query, not even the default ordering, call order_by() with no parameters.

    Here is the implementation of order_by, for your reference -

    def order_by(self, *field_names):
        """
        Returns a new QuerySet instance with the ordering changed.
        """
        assert self.query.can_filter(), \
            "Cannot reorder a query once a slice has been taken."
        obj = self._clone()
        obj.query.clear_ordering(force_empty=False)
        obj.query.add_ordering(*field_names)
        return obj
    

提交回复
热议问题