In a Django QuerySet, how to filter for “not exists” in a many-to-one relationship
Note: this answer was written in 2013 for Django 1.5. See the other answers for better approaches that work with newer versions of Django Use isnull. users_without_reports = User.objects.filter(report__isnull=True) users_with_reports = User.objects.filter(report__isnull=False).distinct() When you use isnull=False, the distinct() is required to prevent duplicate results.