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 offilter(), returning objects that don't match the given condition. -
You can chain
exclude()withfilter()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()
Next snippet