@@ -98,22 +98,25 @@ def get_select_related(self, include):
98
98
def get_prefetch_related (self , include ):
99
99
return getattr (self , 'prefetch_for_includes' , {}).get (include , None )
100
100
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
+
101
112
def get_queryset (self , * args , ** kwargs ):
102
113
""" This mixin adds automatic prefetching for OneToOne and ManyToMany fields. """
103
114
qs = super (AutoPreloadMixin , self ).get_queryset (* args , ** kwargs )
104
115
included_resources = get_included_resources (self .request )
105
116
106
117
for included in included_resources + ['__all__' ]:
107
118
# 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 )
117
120
118
121
# If include was not defined, trying to resolve it automatically
119
122
included_model = None
0 commit comments