mirror of
https://github.com/django/django.git
synced 2025-11-27 13:55:26 +00:00
Fixed #22288 -- Fixed F() expressions with the __range lookup.
This commit is contained in:
parent
f6cd669ff2
commit
4f138fe5a4
11 changed files with 292 additions and 21 deletions
|
|
@ -990,6 +990,20 @@ class Query(object):
|
|||
pre_joins = self.alias_refcount.copy()
|
||||
value = value.resolve_expression(self, reuse=can_reuse, allow_joins=allow_joins)
|
||||
used_joins = [k for k, v in self.alias_refcount.items() if v > pre_joins.get(k, 0)]
|
||||
elif isinstance(value, (list, tuple)):
|
||||
# The items of the iterable may be expressions and therefore need
|
||||
# to be resolved independently.
|
||||
processed_values = []
|
||||
used_joins = set()
|
||||
for sub_value in value:
|
||||
if hasattr(sub_value, 'resolve_expression'):
|
||||
pre_joins = self.alias_refcount.copy()
|
||||
processed_values.append(
|
||||
sub_value.resolve_expression(self, reuse=can_reuse, allow_joins=allow_joins)
|
||||
)
|
||||
# The used_joins for a tuple of expressions is the union of
|
||||
# the used_joins for the individual expressions.
|
||||
used_joins |= set(k for k, v in self.alias_refcount.items() if v > pre_joins.get(k, 0))
|
||||
# Subqueries need to use a different set of aliases than the
|
||||
# outer query. Call bump_prefix to change aliases of the inner
|
||||
# query (the value).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue