diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-12-12 05:39:11 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-12 05:39:11 +0100 |
| commit | fcf95e592774a6ededec35481a2061474d467a2b (patch) | |
| tree | a29be963a35061170cb18d18bcd68dc194fe5728 /django/db/models/fields/generated.py | |
| parent | b287af5dc954628d4b336aefc5027b2edceee64b (diff) | |
Fixed #35018 -- Fixed migrations crash on GeneratedField with BooleanField as output_field on Oracle < 23c.
Thanks Václav Řehák for the report.
Regression in f333e3513e8bdf5ffeb6eeb63021c230082e6f95.
Diffstat (limited to 'django/db/models/fields/generated.py')
| -rw-r--r-- | django/db/models/fields/generated.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/django/db/models/fields/generated.py b/django/db/models/fields/generated.py index 95d19582de..257feeeba2 100644 --- a/django/db/models/fields/generated.py +++ b/django/db/models/fields/generated.py @@ -58,7 +58,13 @@ class GeneratedField(Field): resolved_expression = self.expression.resolve_expression( self._query, allow_joins=False ) - return compiler.compile(resolved_expression) + sql, params = compiler.compile(resolved_expression) + if ( + getattr(self.expression, "conditional", False) + and not connection.features.supports_boolean_expr_in_select_clause + ): + sql = f"CASE WHEN {sql} THEN 1 ELSE 0 END" + return sql, params def check(self, **kwargs): databases = kwargs.get("databases") or [] |
