diff options
| author | Paolo Melchiorre <paolo@melchiorre.org> | 2023-09-13 22:11:08 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-09-14 21:17:12 +0200 |
| commit | 68d769e691eb0d765228defddb3ba982eabdc761 (patch) | |
| tree | 51410c961f6d24b4871e52192d753fcc43d2cc1f /django | |
| parent | 969ecb8236f033d183108fb28849974da188da50 (diff) | |
Fixed #34838 -- Corrected output_field of resolved columns for GeneratedFields.
Thanks Simon Charette for the implementation idea.
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/fields/generated.py | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/django/db/models/fields/generated.py b/django/db/models/fields/generated.py index 0980be98af..deb5875638 100644 --- a/django/db/models/fields/generated.py +++ b/django/db/models/fields/generated.py @@ -1,6 +1,7 @@ from django.core import checks from django.db import connections, router from django.db.models.sql import Query +from django.utils.functional import cached_property from . import NOT_PROVIDED, Field @@ -32,6 +33,17 @@ class GeneratedField(Field): self.db_persist = db_persist super().__init__(**kwargs) + @cached_property + def cached_col(self): + from django.db.models.expressions import Col + + return Col(self.model._meta.db_table, self, self.output_field) + + def get_col(self, alias, output_field=None): + if alias != self.model._meta.db_table and output_field is None: + output_field = self.output_field + return super().get_col(alias, output_field) + def contribute_to_class(self, *args, **kwargs): super().contribute_to_class(*args, **kwargs) |
