diff options
| author | Simon Charette <charette.s@gmail.com> | 2023-11-17 19:56:19 -0500 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-11-18 15:41:59 +0100 |
| commit | 911b1619ab62317aaa7594d5fd52c1b8e43969a0 (patch) | |
| tree | 6c6aee7755a5c95f3cafb8d96eb619e5925a3288 | |
| parent | d7a9f006ed6d6323d3d66e75354202f4d1174ea0 (diff) | |
Refs #34975 -- Handled optional source expressions in Expression.get_refs().
While no code is directly exercising get_refs in a way that triggers
a crash some expressions such as Window stash None in source_expressions
which can obscure the origin of some bugs.
Handling None values like we do in other source_expression traversing
methods such as .contains_aggregates ensures we don't run into surprises
in the future where get_refs() might be used for a different purpose.
| -rw-r--r-- | django/db/models/expressions.py | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/django/db/models/expressions.py b/django/db/models/expressions.py index 3a0c75ebf2..74ae9cab8e 100644 --- a/django/db/models/expressions.py +++ b/django/db/models/expressions.py @@ -417,6 +417,8 @@ class BaseExpression: def get_refs(self): refs = set() for expr in self.get_source_expressions(): + if expr is None: + continue refs |= expr.get_refs() return refs |
