From 1977128ceaf2a57af452605bf72ccaa6d7e589a8 Mon Sep 17 00:00:00 2001 From: Oskar Persson Date: Wed, 31 Jul 2019 01:17:02 +0200 Subject: [PATCH 1/2] Initial attempt at select related --- src/polymorphic/query.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/polymorphic/query.py b/src/polymorphic/query.py index 8a139cee..f09cf06d 100644 --- a/src/polymorphic/query.py +++ b/src/polymorphic/query.py @@ -403,7 +403,21 @@ class self.model, but as a class derived from self.model. We want to re-fetch **{(f"{pk_name}__in"): idlist} ) # copy select related configuration to new qs - real_objects.query.select_related = self.query.select_related + + if self.query.select_related is False: + real_objects.query.select_related = False + else: + concrete_model_name = real_concrete_class._meta.model_name + sub_model_names = set([m._meta.model_name for m in self.model.__subclasses__()]) + sub_model_names.remove(concrete_model_name) + + for sub_name in sub_model_names: + self.query.select_related.pop(sub_name, None) + + if concrete_model_name in self.query.select_related: + real_objects.query.select_related = self.query.select_related[concrete_model_name] + else: + real_objects.query.select_related = self.query.select_related # Copy deferred fields configuration to the new queryset deferred_loading_fields = [] From f02f6098d14d6e811b200d4d8a7cd33aee78142f Mon Sep 17 00:00:00 2001 From: Brian Kohan Date: Tue, 2 Dec 2025 14:38:56 -0800 Subject: [PATCH 2/2] run ruff --- src/polymorphic/query.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/polymorphic/query.py b/src/polymorphic/query.py index f09cf06d..273a996f 100644 --- a/src/polymorphic/query.py +++ b/src/polymorphic/query.py @@ -415,7 +415,9 @@ class self.model, but as a class derived from self.model. We want to re-fetch self.query.select_related.pop(sub_name, None) if concrete_model_name in self.query.select_related: - real_objects.query.select_related = self.query.select_related[concrete_model_name] + real_objects.query.select_related = self.query.select_related[ + concrete_model_name + ] else: real_objects.query.select_related = self.query.select_related