1
0
mirror of https://github.com/django/django.git synced 2025-06-03 10:39:12 +00:00

Refs #36326 -- Fixed QuerySet.raw() crash on models with CompositePrimaryKey on Oracle.

Virtual CompositePrimaryKey fields should be ignored.

Regression in 1831f7733d3ef03d1ca7fac3e8d9f4c5e3e3375e.
This commit is contained in:
Mariusz Felisiak 2025-04-25 10:19:46 +01:00
parent 0596263c31
commit 045110ff30

View File

@ -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: