Skip to content

Commit 473ac5e

Browse files
committed
INTPYTHON-348 Add support for QuerySet.raw()
- Tim tips
1 parent 992e167 commit 473ac5e

File tree

3 files changed

+3
-32
lines changed

3 files changed

+3
-32
lines changed

django_mongodb/compiler.py

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -630,20 +630,6 @@ def explain_query(self):
630630
result.append(f"{key}: {formatted_value}")
631631
return result
632632

633-
def apply_converters(self, rows, converters):
634-
connection = self.connection
635-
converters = list(converters.items())
636-
for row in rows:
637-
for pos, (convs, expression) in converters:
638-
try:
639-
value = list(row.values())[pos]
640-
except AttributeError:
641-
value = row[pos]
642-
for converter in convs:
643-
value = converter(value, expression, connection)
644-
row[pos] = value
645-
yield row
646-
647633

648634
class SQLInsertCompiler(SQLCompiler):
649635
def execute_sql(self, returning_fields=None):

django_mongodb/features.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
8888
"contenttypes_tests.test_fields.GenericRelationTests.test_value_to_string",
8989
# INTPYTHON-348 add support for QuerySet.raw_mql()
9090
# https://github.com/mongodb-labs/django-mongodb/pull/183
91-
"raw_query.tests.RawQueryTests",
91+
# "raw_query.tests.RawQueryTests",
9292
}
9393
# $bitAnd, #bitOr, and $bitXor are new in MongoDB 6.3.
9494
_django_test_expected_failures_bitwise = {

django_mongodb/query.py

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -341,8 +341,7 @@ def _execute_query(self):
341341
def get_columns(self):
342342
if self.cursor is None:
343343
self._execute_query()
344-
converter = connections[self.using].introspection.identifier_converter
345-
return [converter(column_name) for column_name in self.model._meta.fields]
344+
return [f.column for f in self.model._meta.fields]
346345

347346
def __str__(self):
348347
return "%s" % self.sql
@@ -364,20 +363,6 @@ def __init__(
364363
sql=raw_query, using=self.db, model=self.model, params=params
365364
)
366365

367-
def resolve_model_init_order(self):
368-
converter = connections[self.db].introspection.identifier_converter
369-
model_init_fields = [
370-
f for f in self.model._meta.fields if f.column in [j.column for j in self.columns]
371-
]
372-
annotation_fields = [
373-
(column, pos)
374-
for pos, column in enumerate(self.columns)
375-
if column not in self.model_fields
376-
]
377-
model_init_order = [self.columns.index(converter(f)) for f in model_init_fields]
378-
model_init_names = [f.attname for f in model_init_fields]
379-
return model_init_names, model_init_order, annotation_fields
380-
381366
def iterator(self):
382367
yield from MongoRawModelIterable(self)
383368

@@ -397,7 +382,7 @@ def __iter__(self):
397382
annotation_fields,
398383
) = self.queryset.resolve_model_init_order()
399384
model_cls = self.queryset.model
400-
fields = [self.queryset.model_fields.get(c.column) for c in self.queryset.columns]
385+
fields = [self.queryset.model_fields.get(c) for c in self.queryset.columns]
401386
converters = compiler.get_converters(
402387
[f.get_col(f.model._meta.db_table) if f else None for f in fields]
403388
)

0 commit comments

Comments
 (0)