Skip to content

Commit a48cebd

Browse files
committed
Initial attempt at select related
1 parent ad4e6e9 commit a48cebd

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

polymorphic/query.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,21 @@ class self.model, but as a class derived from self.model. We want to re-fetch
410410
**{("%s__in" % pk_name): idlist}
411411
)
412412
# copy select related configuration to new qs
413-
real_objects.query.select_related = self.query.select_related
413+
414+
if self.query.select_related is False:
415+
real_objects.query.select_related = False
416+
else:
417+
concrete_model_name = real_concrete_class._meta.model_name
418+
sub_model_names = set([m._meta.model_name for m in self.model.__subclasses__()])
419+
sub_model_names.remove(concrete_model_name)
420+
421+
for sub_name in sub_model_names:
422+
self.query.select_related.pop(sub_name, None)
423+
424+
if concrete_model_name in self.query.select_related:
425+
real_objects.query.select_related = self.query.select_related[concrete_model_name]
426+
else:
427+
real_objects.query.select_related = self.query.select_related
414428

415429
# Copy deferred fields configuration to the new queryset
416430
deferred_loading_fields = []

0 commit comments

Comments
 (0)