summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Johnson <me@adamj.eu>2025-09-04 18:14:51 +0100
committerJacob Walls <jacobtylerwalls@gmail.com>2025-10-16 14:52:22 -0400
commit821619aa8771ef211c4c4922001efdf914201ca3 (patch)
treed793fd109d67592ff66a80330cb48a8cde31732d
parenta321d961b03d47b7f0c2e21a2370fc9e74c1889b (diff)
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.
-rw-r--r--django/db/models/fields/related_descriptors.py22
1 files 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