Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 487
EnterSB Avatar asked Feb 07 '26 11:02

EnterSB


1 Answers

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.

like image 122
3 revs, 2 users 91%vsd Avatar answered Feb 08 '26 23:02

3 revs, 2 users 91%vsd



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!