Fixed #30971 -- Prevented Query.resolve_lookup_value() from coercing list values to tuples.
Regression in 8a281aa7fe
.
This commit is contained in:
parent
b93a0e34d9
commit
8be79984dc
|
@ -1059,21 +1059,10 @@ class Query(BaseExpression):
|
||||||
elif isinstance(value, (list, tuple)):
|
elif isinstance(value, (list, tuple)):
|
||||||
# The items of the iterable may be expressions and therefore need
|
# The items of the iterable may be expressions and therefore need
|
||||||
# to be resolved independently.
|
# to be resolved independently.
|
||||||
resolved_values = []
|
return type(value)(
|
||||||
for sub_value in value:
|
self.resolve_lookup_value(sub_value, can_reuse, allow_joins, simple_col)
|
||||||
if hasattr(sub_value, 'resolve_expression'):
|
for sub_value in value
|
||||||
if isinstance(sub_value, F):
|
)
|
||||||
resolved_values.append(sub_value.resolve_expression(
|
|
||||||
self, reuse=can_reuse, allow_joins=allow_joins,
|
|
||||||
simple_col=simple_col,
|
|
||||||
))
|
|
||||||
else:
|
|
||||||
resolved_values.append(sub_value.resolve_expression(
|
|
||||||
self, reuse=can_reuse, allow_joins=allow_joins,
|
|
||||||
))
|
|
||||||
else:
|
|
||||||
resolved_values.append(sub_value)
|
|
||||||
value = tuple(resolved_values)
|
|
||||||
return value
|
return value
|
||||||
|
|
||||||
def solve_lookup_type(self, lookup):
|
def solve_lookup_type(self, lookup):
|
||||||
|
|
|
@ -113,3 +113,10 @@ class TestQuery(SimpleTestCase):
|
||||||
clone = query.clone()
|
clone = query.clone()
|
||||||
clone.add_select_related(['note', 'creator__extra'])
|
clone.add_select_related(['note', 'creator__extra'])
|
||||||
self.assertEqual(query.select_related, {'creator': {}})
|
self.assertEqual(query.select_related, {'creator': {}})
|
||||||
|
|
||||||
|
def test_iterable_lookup_value(self):
|
||||||
|
query = Query(Item)
|
||||||
|
where = query.build_where(Q(name=['a', 'b']))
|
||||||
|
name_exact = where.children[0]
|
||||||
|
self.assertIsInstance(name_exact, Exact)
|
||||||
|
self.assertEqual(name_exact.rhs, "['a', 'b']")
|
||||||
|
|
Loading…
Reference in New Issue