Sam Creamer
Sam Creamer

Reputation: 5361

Django - Get objects that don't have one to to one attribute

I have a concept where there is a model that has a OneToOne field with User. How can I query for all users that are not assigned to one of these?

For example:

class SpecialUser(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

Not all users are special users. How can I get all users that are not special users using objects (ie: User.objects.filter(something)).

Thanks!

Upvotes: 0

Views: 87

Answers (1)

Enthusiast Martin
Enthusiast Martin

Reputation: 3091

You can do the following:

User.objects.filter(specialuser=None)

Or:

User.objects.filter(specialuser__isnull=True)

You can provide related_name to make it more readable or to avoid pottential collisions. Example:

class SpecialUser(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="special_user_profile")    

In this case, you'd use the related name instead:

User.objects.filter(special_user_profile=None)  

Upvotes: 2

Related Questions