EnterSB
EnterSB

Reputation: 1162

Django different model manager on foreign key

I have model User. There are two managers, UserManager that filters query set by is_active, and AllUserManager. Default manager is set to be UserManager.

User has foreign key to another model, named Address, having related_name='users'.

Problem is next. When User is_active is False, Address does not display inactive User in users collection.

Is it possible somehow to set AllUserManager to be default manager on the fly for some FK? I want to be able to list all users in address, regardless of their activity.

Upvotes: 3

Views: 3921

Answers (1)

vsd
vsd

Reputation: 1473

You can specify which manager to use in queries. If all_users = AllUserManager() then:

# address is instance of Address
address.users(manager='all_users').all()

Also, if all_users is default manager, you can set use_for_related_fields = True on AllUserManager.

Upvotes: 8

Related Questions