diff options
| author | 朱穆穆 <mumu.zhu@feat.com> | 2022-12-29 10:23:46 +0800 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-01-24 10:20:27 +0100 |
| commit | d3c93cdc597e0efc2815111c04dd5a427432ed37 (patch) | |
| tree | 3b09888fcf698f51ac25fb6d0838cda890901d25 /django/db/models/sql/compiler.py | |
| parent | ef85b6bf0bc5a8b194f0724cf5bbedbcee402b96 (diff) | |
Fixed #34227 -- Fixed QuerySet.select_related() with multi-level FilteredRelation.
Diffstat (limited to 'django/db/models/sql/compiler.py')
| -rw-r--r-- | django/db/models/sql/compiler.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py index 7c433b3f06..c07076d54a 100644 --- a/django/db/models/sql/compiler.py +++ b/django/db/models/sql/compiler.py @@ -1274,6 +1274,9 @@ class SQLCompiler: if from_obj: final_field.remote_field.set_cached_value(from_obj, obj) + def local_setter_noop(obj, from_obj): + pass + def remote_setter(name, obj, from_obj): setattr(from_obj, name, obj) @@ -1295,7 +1298,11 @@ class SQLCompiler: "model": model, "field": final_field, "reverse": True, - "local_setter": partial(local_setter, final_field), + "local_setter": ( + partial(local_setter, final_field) + if len(joins) <= 2 + else local_setter_noop + ), "remote_setter": partial(remote_setter, name), "from_parent": from_parent, } |
