diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2025-04-25 10:19:46 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2025-04-26 12:12:08 +0100 |
| commit | 045110ff3089aefd9c3e65c707df465bacfed986 (patch) | |
| tree | f08acbbae432c3c09d545f3cdd67a852bfc193fc | |
| parent | 0596263c3136bc26cffa670e5322bd0aa56c4d34 (diff) | |
Refs #36326 -- Fixed QuerySet.raw() crash on models with CompositePrimaryKey on Oracle.
Virtual CompositePrimaryKey fields should be ignored.
Regression in 1831f7733d3ef03d1ca7fac3e8d9f4c5e3e3375e.
| -rw-r--r-- | django/db/models/query.py | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/django/db/models/query.py b/django/db/models/query.py index 915acb629a..43dd11c7d7 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -2077,7 +2077,9 @@ class RawQuerySet: """Resolve the init field names and value positions.""" converter = connections[self.db].introspection.identifier_converter model_init_fields = [ - f for f in self.model._meta.fields if converter(f.column) in self.columns + field + for column_name, field in self.model_fields.items() + if column_name in self.columns ] annotation_fields = [ (column, pos) @@ -2192,10 +2194,13 @@ class RawQuerySet: def model_fields(self): """A dict mapping column names to model field names.""" converter = connections[self.db].introspection.identifier_converter - model_fields = {} - for field in self.model._meta.fields: - model_fields[converter(field.column)] = field - return model_fields + return { + converter(field.column): field + for field in self.model._meta.fields + # Fields with None "column" should be ignored + # (e.g. CompositePrimaryKey). + if field.column + } class Prefetch: |
