diff options
author | can <cansarigol@derinbilgi.com.tr> | 2019-07-10 15:07:48 +0300 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-07-11 08:27:15 +0200 |
commit | 52545e788d664040abf4f1a5d77cdfc61152ffca (patch) | |
tree | 72726e1a7c7343ad3ebadf97dfa5a7be1f8adc50 /django/db/models/expressions.py | |
parent | a9c6ab03560424ed7dff24849c8ddaa3e1eae62e (diff) | |
download | django-52545e788d664040abf4f1a5d77cdfc61152ffca.tar.gz |
Fixed #28289 -- Fixed crash of RawSQL annotations on inherited model fields.
Diffstat (limited to 'django/db/models/expressions.py')
-rw-r--r-- | django/db/models/expressions.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/django/db/models/expressions.py b/django/db/models/expressions.py index b757426440..bef93d36a2 100644 --- a/django/db/models/expressions.py +++ b/django/db/models/expressions.py @@ -699,6 +699,16 @@ class RawSQL(Expression): def get_group_by_cols(self, alias=None): return [self] + def resolve_expression(self, query=None, allow_joins=True, reuse=None, summarize=False, for_save=False): + # Resolve parents fields used in raw SQL. + for parent in query.model._meta.get_parent_list(): + for parent_field in parent._meta.local_fields: + _, column_name = parent_field.get_attname_column() + if column_name.lower() in self.sql.lower(): + query.resolve_ref(parent_field.name, allow_joins, reuse, summarize) + break + return super().resolve_expression(query, allow_joins, reuse, summarize, for_save) + class Star(Expression): def __repr__(self): |