Skip to content

Commit 1977128

Browse files
OskarPerssonbckohan
authored andcommitted
Initial attempt at select related
1 parent 9399f7d commit 1977128

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

src/polymorphic/query.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,21 @@ class self.model, but as a class derived from self.model. We want to re-fetch
403403
**{(f"{pk_name}__in"): idlist}
404404
)
405405
# copy select related configuration to new qs
406-
real_objects.query.select_related = self.query.select_related
406+
407+
if self.query.select_related is False:
408+
real_objects.query.select_related = False
409+
else:
410+
concrete_model_name = real_concrete_class._meta.model_name
411+
sub_model_names = set([m._meta.model_name for m in self.model.__subclasses__()])
412+
sub_model_names.remove(concrete_model_name)
413+
414+
for sub_name in sub_model_names:
415+
self.query.select_related.pop(sub_name, None)
416+
417+
if concrete_model_name in self.query.select_related:
418+
real_objects.query.select_related = self.query.select_related[concrete_model_name]
419+
else:
420+
real_objects.query.select_related = self.query.select_related
407421

408422
# Copy deferred fields configuration to the new queryset
409423
deferred_loading_fields = []

0 commit comments

Comments
 (0)