Possible fix to PYTHON-785
This commit is contained in:
@@ -941,6 +941,8 @@ class AbstractQuerySet(object):
|
|||||||
"Can't resolve fields {0} in {1}".format(
|
"Can't resolve fields {0} in {1}".format(
|
||||||
', '.join(missing_fields), self.model.__name__))
|
', '.join(missing_fields), self.model.__name__))
|
||||||
|
|
||||||
|
fields = [self.model._columns[field].db_field_name for field in fields]
|
||||||
|
|
||||||
if action == 'defer':
|
if action == 'defer':
|
||||||
clone._defer_fields.update(fields)
|
clone._defer_fields.update(fields)
|
||||||
elif action == 'only':
|
elif action == 'only':
|
||||||
@@ -1068,18 +1070,18 @@ class ModelQuerySet(AbstractQuerySet):
|
|||||||
|
|
||||||
def _select_fields(self):
|
def _select_fields(self):
|
||||||
if self._defer_fields or self._only_fields:
|
if self._defer_fields or self._only_fields:
|
||||||
fields = self.model._columns.keys()
|
fields = [columns.db_field_name for columns in self.model._columns.values()]
|
||||||
if self._defer_fields:
|
if self._defer_fields:
|
||||||
fields = [f for f in fields if f not in self._defer_fields]
|
fields = [f for f in fields if f not in self._defer_fields]
|
||||||
# select the partition keys if all model fields are set defer
|
# select the partition keys if all model fields are set defer
|
||||||
if not fields:
|
if not fields:
|
||||||
fields = self.model._partition_keys
|
fields = [columns.db_field_name for columns in self.model._partition_keys.values()]
|
||||||
if self._only_fields:
|
if self._only_fields:
|
||||||
fields = [f for f in fields if f in self._only_fields]
|
fields = [f for f in fields if f in self._only_fields]
|
||||||
if not fields:
|
if not fields:
|
||||||
raise QueryException('No fields in select query. Only fields: "{0}", defer fields: "{1}"'.format(
|
raise QueryException('No fields in select query. Only fields: "{0}", defer fields: "{1}"'.format(
|
||||||
','.join(self._only_fields), ','.join(self._defer_fields)))
|
','.join(self._only_fields), ','.join(self._defer_fields)))
|
||||||
return [self.model._columns[f].db_field_name for f in fields]
|
return fields
|
||||||
return super(ModelQuerySet, self)._select_fields()
|
return super(ModelQuerySet, self)._select_fields()
|
||||||
|
|
||||||
def _get_result_constructor(self):
|
def _get_result_constructor(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user