From 821619aa8771ef211c4c4922001efdf914201ca3 Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Thu, 4 Sep 2025 18:14:51 +0100 Subject: Refs #28586 -- Simplified related descriptor get_queryset() methods. Modify these methods to accept an instance parameter which is clearer and allows us to set the instance hint earlier. --- django/db/models/fields/related_descriptors.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/django/db/models/fields/related_descriptors.py b/django/db/models/fields/related_descriptors.py index 2c8e59f1d9..7df96491a0 100644 --- a/django/db/models/fields/related_descriptors.py +++ b/django/db/models/fields/related_descriptors.py @@ -166,8 +166,10 @@ class ForwardManyToOneDescriptor: def is_cached(self, instance): return self.field.is_cached(instance) - def get_queryset(self, **hints): - return self.field.remote_field.model._base_manager.db_manager(hints=hints).all() + def get_queryset(self, *, instance): + return self.field.remote_field.model._base_manager.db_manager( + hints={"instance": instance} + ).all() def get_prefetch_querysets(self, instances, querysets=None): if querysets and len(querysets) != 1: @@ -175,8 +177,9 @@ class ForwardManyToOneDescriptor: "querysets argument of get_prefetch_querysets() should have a length " "of 1." ) - queryset = querysets[0] if querysets else self.get_queryset() - queryset._add_hints(instance=instances[0]) + queryset = ( + querysets[0] if querysets else self.get_queryset(instance=instances[0]) + ) rel_obj_attr = self.field.get_foreign_related_value instance_attr = self.field.get_local_related_value @@ -456,8 +459,10 @@ class ReverseOneToOneDescriptor: def is_cached(self, instance): return self.related.is_cached(instance) - def get_queryset(self, **hints): - return self.related.related_model._base_manager.db_manager(hints=hints).all() + def get_queryset(self, *, instance): + return self.related.related_model._base_manager.db_manager( + hints={"instance": instance} + ).all() def get_prefetch_querysets(self, instances, querysets=None): if querysets and len(querysets) != 1: @@ -465,8 +470,9 @@ class ReverseOneToOneDescriptor: "querysets argument of get_prefetch_querysets() should have a length " "of 1." ) - queryset = querysets[0] if querysets else self.get_queryset() - queryset._add_hints(instance=instances[0]) + queryset = ( + querysets[0] if querysets else self.get_queryset(instance=instances[0]) + ) rel_obj_attr = self.related.field.get_local_related_value instance_attr = self.related.field.get_foreign_related_value -- cgit v1.3