Hi folks,

I have some models with a custom Manager that prefetches certain fields:

class PrefetchManager(models.Manager):
    def get_queryset(self):
        return super().get_queryset()\
            .select_related(*self.model.select_fields)\
            .prefetch_related(*self.model.prefetch_fields)


class MyModel(models.Model):
    foo = models.ForeignKey(Foo)
    bars = models.ManyToManyField(Bar, related_name='mymodels')

    select_fields = ('foo',)
    prefetch_fields = ('bars')
    prefetched = PrefetchManager()


This allows the nice and succinct "MyModel.prefetched.filter(...)" to get model 
instances with prefetched fields. However, I would also like this to work with 
RelatedManager, i.e.:

    m = MyModel.objects.get(pk=1)
    m.bars.prefetched.filter(...)

to get all Bar connected to m with the prefetched fields I have defined on Bar. 
Is there a way to do this? Can I create a custom RelatedManager for 'bars'? I 
can rewrite it as:

   Bar.prefetched.filter(mymodels=m, ...)

but it feels more awkward.

Thanks,
Erik

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/9E6B2519-C3BC-4820-B8A2-043E8EC450C2%40cederstrand.dk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to