How Do I Exclude Values in Django QuerySet Filtering?

James W.

The Problem

With the Django QuerySet class, you can apply filters that return QuerySets defined by your filters. The filter() method returns all objects that match the keyword arguments given to the method.

The following method returns all objects with the year 2005:

Entry.objects.filter(year=2005)

However, say you want to return all objects that are not equal to a keyword argument. The filter() method cannot make use of comparison operators, like ! or != to define a “not equal to” comparison.

So is it possible to exclude information using a filter? Or is there another method you could use?

The Solution

The exclude() method from the QuerySet class returns all objects that do not match the given keyword arguments. So whatever data matches the parameter that is passed into the exclude() method will be excluded from the returned QuerySet.

Below is an example of the use of the exclude() method:

Entry.objects.filter(year=2005).exclude(color=blue)

The QuerySet created above will contain all objects associated with the year 2005, except those associated with the color blue.

Further Reading

For more tips on working with Django on Sentry, have a look at these articles:

Join the discussionCome work with us
Share on Twitter
Bookmark this page
Ask a questionImprove this Answer

Related Answers

A better experience for your users. An easier life for your developers.

Try Sentry For FreeRequest a Demo
    TwitterGitHubDribbbleLinkedin
© 2022 • Sentry is a registered Trademark
of Functional Software, Inc.