@@ -98,22 +98,25 @@ def get_select_related(self, include):
9898 def get_prefetch_related (self , include ):
9999 return getattr (self , 'prefetch_for_includes' , {}).get (include , None )
100100
101+ def get_queryset_with_related (self , qs , included ):
102+ select_related = self .get_select_related (included )
103+ if select_related is not None :
104+ qs = qs .select_related (* select_related )
105+
106+ prefetch_related = self .get_prefetch_related (included )
107+ if prefetch_related is not None :
108+ qs = qs .prefetch_related (* prefetch_related )
109+
110+ return qs
111+
101112 def get_queryset (self , * args , ** kwargs ):
102113 """ This mixin adds automatic prefetching for OneToOne and ManyToMany fields. """
103114 qs = super (AutoPreloadMixin , self ).get_queryset (* args , ** kwargs )
104115 included_resources = get_included_resources (self .request )
105116
106117 for included in included_resources + ['__all__' ]:
107118 # Custom defined "select_related" and "prefetch_related" is a priority
108- select_related = self .get_select_related (included )
109- if select_related is not None :
110- qs = qs .select_related (* select_related )
111- continue
112-
113- prefetch_related = self .get_prefetch_related (included )
114- if prefetch_related is not None :
115- qs = qs .prefetch_related (* prefetch_related )
116- continue
119+ qs = self .get_queryset_with_related (qs , included )
117120
118121 # If include was not defined, trying to resolve it automatically
119122 included_model = None
0 commit comments