diff options
| author | Simon Charette <charette.s@gmail.com> | 2024-04-05 23:20:41 -0400 |
|---|---|---|
| committer | nessita <124304+nessita@users.noreply.github.com> | 2024-04-23 13:17:17 -0300 |
| commit | 195d885ca01b14e3ce9a1881c3b8f7074f953736 (patch) | |
| tree | 559f8ababd0bb79626a0fa20c00a4d1bf6827a48 /django/db/models/sql/compiler.py | |
| parent | 83f5478225588f31e7cbbfed63a4a2b936abc03f (diff) | |
Refs #35356 -- Clarified select related with masked field logic.
By always including related objects in the select mask via adjusting the
defer logic (_get_defer_select_mask()), it becomes possible for
select_related_descend() to treat forward and reverse relationships
indistinctively.
This work also simplifies and adds comments to
select_related_descend() to make it easier to understand.
Diffstat (limited to 'django/db/models/sql/compiler.py')
| -rw-r--r-- | django/db/models/sql/compiler.py | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py index 7541817ba0..7377e555c3 100644 --- a/django/db/models/sql/compiler.py +++ b/django/db/models/sql/compiler.py @@ -1259,11 +1259,10 @@ class SQLCompiler: ] for related_object, related_field, model in related_fields: if not select_related_descend( - related_field, + related_object, restricted, requested, select_mask, - reverse=True, ): continue @@ -1280,7 +1279,7 @@ class SQLCompiler: "model": model, "field": related_field, "reverse": True, - "local_setter": related_field.remote_field.set_cached_value, + "local_setter": related_object.set_cached_value, "remote_setter": related_field.set_cached_value, "from_parent": from_parent, } @@ -1296,7 +1295,7 @@ class SQLCompiler: select_fields.append(len(select)) select.append((col, None)) klass_info["select_fields"] = select_fields - next = requested.get(related_field.related_query_name(), {}) + next = requested.get(related_field_name, {}) next_klass_infos = self.get_related_selections( select, related_select_mask, |
