Using QuerySet order_by()

A snippet showing how to use order_by() in Django QuerySets.


# models.py

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=120)
    price = models.DecimalField(max_digits=8, decimal_places=2)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name
  

# views.py

from django.shortcuts import render
from .models import Product

def product_list(request):
    qs = Product.objects.order_by('price')  # ascending order
    return render(request, 'products.html', {'products': qs})
  
Explanation:
  • order_by() sorts QuerySets by one or more fields.
  • Use a minus sign (-) for descending order, e.g., order_by('-price').
  • Multiple fields can be used to break ties, like order_by('price', 'name').
  • Commonly used in blogs (order by date), shops (order by price), or leaderboards (order by score).
  • Category Models & ORM
  • Total Views 488
  • Last Modified 27 December, 2025
  • Tags #queryset #order #sorting #orm
Previous snippet
Using QuerySet exclude()
Never miss a story on Django.wiki

Subscribe for fresh tutorials, snippets, and updates.

By subscribing you agree to our Privacy Policy.