Using QuerySet exclude()

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


# models.py

from django.db import models

class Employee(models.Model):
    name = models.CharField(max_length=120)
    department = models.CharField(max_length=50)
    is_active = models.BooleanField(default=True)

    def __str__(self):
        return self.name
  

# views.py

from django.shortcuts import render
from .models import Employee

def employee_list(request):
    qs = Employee.objects.exclude(is_active=False)
    return render(request, 'employees.html', {'employees': qs})
  

# Django Shell

>>> from company.models import Employee
>>> Employee.objects.create(name='Alice', department='HR', is_active=True)
>>> Employee.objects.create(name='Bob', department='IT', is_active=False)
>>> Employee.objects.exclude(is_active=False)
<QuerySet [<Employee: Alice>]>
>>> Employee.objects.exclude(department='HR')
<QuerySet [<Employee: Bob>]>
  
Explanation:
  • exclude() is the opposite of filter(), returning objects that don't match the given condition.
  • You can chain exclude() with filter() for fine‑grained control over QuerySets.
  • Useful for hiding inactive users, ignoring soft‑deleted records, or skipping certain categories.
  • QuerySets are lazy, so exclude() does not run until you actually access the results.
  • Category Models & ORM
  • Total Views 553
  • Last Modified 03 November, 2025
  • Tags #queryset #exclude #orm #models
Previous snippet
Using QuerySet filter()
Never miss a story on Django.wiki

Subscribe for fresh tutorials, snippets, and updates.

By subscribing you agree to our Privacy Policy.