Search code examples
djangodjango-model-utils

For django-model-utils, how can `select_subclasses()` be applied to fields of an object?


I have some models like this:

class Container(models.Model):
    pass

class Parent(models.Model):
    container = models.ForeignKey(Container, related_name='items')
    pass

class Child(Parent):
    pass

class RedHeadedStepChild(Parent):
    pass

Is it possible to use select_subclasses() to prefetch fields in the container? I want to do something like this:

qs = Container.objects.all().prefetch_related('items')\
     .select_subclasses() # <---

So that the items related field of each Container is retrieved in each of its respective subclass types.


Solution

  • What about:

    Container.objects.prefetch_related(
        Prefetch('items', Parent.objects.select_subclasses())
    )