}}}
result:
{{{
======================================================================
FAIL: test_wrong_select_related
(known_related_objects.tests.ExistingRelatedInstancesTests.test_wrong_select_related)
----------------------------------------------------------------------
Traceback (most recent call last):
File "D:\Work\django\tests\known_related_objects\tests.py", line 171, in
test_wrong_select_related
self.assertEqual(p[0].pool.tournament,
p[0].tournament_pool.tournament)
AssertionError: <Tournament: Tournament object (1)> != <PoolStyle:
PoolStyle object (1)>
----------------------------------------------------------------------
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/34227>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
Comment (by zhu):
Seems this bug can be fixed by:
{{{
M django/db/models/sql/compiler.py
@@ -1270,6 +1270,9 @@ class SQLCompiler:
if from_obj:
final_field.remote_field.set_cached_value(from_obj,
obj)
+ def no_local_setter(obj, from_obj):
+ pass
+
def remote_setter(name, obj, from_obj):
setattr(from_obj, name, obj)
@@ -1291,7 +1294,7 @@ 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 no_local_setter,
"remote_setter": partial(remote_setter, name),
"from_parent": from_parent,
}
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/34227#comment:1>