This has been possible since Django 1.7. Say you have a model Entry
with two managers:
class Entry(models.Model):
blog = models.ForeignKey('Blog', on_delete=models.CASCADE)
...
objects = models.Manager() # Default Manager
entries = EntryManager() # Custom Manager
Then you can control which manager you use by passing manager
to entry_set
:
b = Blog.objects.get(id=1)
b.entry_set.all() # implicitly use the default manager
b.entry_set(manager='objects').all() # explicitly use the default manager
b.entry_set(manager='entries').all() # explicitly use the entries manager
See the docs on using a custom reverse manager for more info.