diff options
| author | Adam Johnson <me@adamj.eu> | 2025-09-04 18:14:51 +0100 |
|---|---|---|
| committer | Jacob Walls <jacobtylerwalls@gmail.com> | 2025-10-16 14:52:22 -0400 |
| commit | 821619aa8771ef211c4c4922001efdf914201ca3 (patch) | |
| tree | d793fd109d67592ff66a80330cb48a8cde31732d | |
| parent | a321d961b03d47b7f0c2e21a2370fc9e74c1889b (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.py | 22 |
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 |
