From 045110ff3089aefd9c3e65c707df465bacfed986 Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Fri, 25 Apr 2025 10:19:46 +0100 Subject: [PATCH] Refs #36326 -- Fixed QuerySet.raw() crash on models with CompositePrimaryKey on Oracle. Virtual CompositePrimaryKey fields should be ignored. Regression in 1831f7733d3ef03d1ca7fac3e8d9f4c5e3e3375e. --- django/db/models/query.py | 15 ++++++++++----- 1 file 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: