mirror of
https://github.com/django/django.git
synced 2025-10-29 08:36:09 +00:00
Complete rework of translating data values from database Deprecation of SubfieldBase, removal of resolve_columns and convert_values in favour of a more general converter based approach and public API Field.from_db_value(). Now works seamlessly with aggregation, .values() and raw queries. Thanks to akaariai in particular for extensive advice and inspiration, also to shaib, manfre and timograham for their reviews.
This commit is contained in:
@@ -1560,7 +1560,6 @@ class RawQuerySet(object):
|
||||
compiler = connections[db].ops.compiler('SQLCompiler')(
|
||||
self.query, connections[db], db
|
||||
)
|
||||
need_resolv_columns = hasattr(compiler, 'resolve_columns')
|
||||
|
||||
query = iter(self.query)
|
||||
|
||||
@@ -1578,11 +1577,11 @@ class RawQuerySet(object):
|
||||
model_cls = deferred_class_factory(self.model, skip)
|
||||
else:
|
||||
model_cls = self.model
|
||||
if need_resolv_columns:
|
||||
fields = [self.model_fields.get(c, None) for c in self.columns]
|
||||
fields = [self.model_fields.get(c, None) for c in self.columns]
|
||||
converters = compiler.get_converters(fields)
|
||||
for values in query:
|
||||
if need_resolv_columns:
|
||||
values = compiler.resolve_columns(values, fields)
|
||||
if converters:
|
||||
values = compiler.apply_converters(values, converters)
|
||||
# Associate fields to values
|
||||
model_init_values = [values[pos] for pos in model_init_pos]
|
||||
instance = model_cls.from_db(db, model_init_names, model_init_values)
|
||||
|
||||
Reference in New Issue
Block a user