summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2025-04-25 10:19:46 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2025-04-26 12:12:08 +0100
commit045110ff3089aefd9c3e65c707df465bacfed986 (patch)
treef08acbbae432c3c09d545f3cdd67a852bfc193fc
parent0596263c3136bc26cffa670e5322bd0aa56c4d34 (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.py15
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: