Loading django/db/models/expressions.py +1 −1 Original line number Diff line number Diff line Loading @@ -210,7 +210,7 @@ class BaseExpression(object): ]) return c def _prepare(self): def _prepare(self, field): """ Hook used by Field.get_prep_lookup() to do custom preparation. """ Loading django/db/models/fields/__init__.py +1 −1 Original line number Diff line number Diff line Loading @@ -740,7 +740,7 @@ class Field(RegisterLookupMixin): Perform preliminary non-db specific lookup checks and conversions """ if hasattr(value, '_prepare'): return value._prepare() return value._prepare(self) if lookup_type in { 'iexact', 'contains', 'icontains', Loading django/db/models/query.py +7 −1 Original line number Diff line number Diff line Loading @@ -1108,12 +1108,18 @@ class QuerySet(object): for field, objects in other._known_related_objects.items(): self._known_related_objects.setdefault(field, {}).update(objects) def _prepare(self): def _prepare(self, field): if self._fields is not None: # values() queryset can only be used as nested queries # if they are set up to select only a single field. if len(self._fields or self.model._meta.concrete_fields) > 1: raise TypeError('Cannot use multi-field values as a filter value.') else: # If the query is used as a subquery for a ForeignKey with non-pk # target field, make sure to select the target field in the subquery. foreign_fields = getattr(field, 'foreign_related_fields', ()) if len(foreign_fields) == 1 and not foreign_fields[0].primary_key: return self.values(foreign_fields[0].name) return self def _as_sql(self, connection): Loading django/db/models/sql/query.py +1 −1 Original line number Diff line number Diff line Loading @@ -235,7 +235,7 @@ class Query(object): memo[id(self)] = result return result def _prepare(self): def _prepare(self, field): return self def get_compiler(self, using=None, connection=None): Loading docs/releases/1.9.3.txt +3 −0 Original line number Diff line number Diff line Loading @@ -21,3 +21,6 @@ Bugfixes * Fixed a regression for cases where ``ForeignObject.get_extra_descriptor_filter()`` returned a ``Q`` object (:ticket:`26153`). * Fixed regression with an ``__in=qs`` lookup for a ``ForeignKey`` with ``to_field`` set (:ticket:`26196`). Loading
django/db/models/expressions.py +1 −1 Original line number Diff line number Diff line Loading @@ -210,7 +210,7 @@ class BaseExpression(object): ]) return c def _prepare(self): def _prepare(self, field): """ Hook used by Field.get_prep_lookup() to do custom preparation. """ Loading
django/db/models/fields/__init__.py +1 −1 Original line number Diff line number Diff line Loading @@ -740,7 +740,7 @@ class Field(RegisterLookupMixin): Perform preliminary non-db specific lookup checks and conversions """ if hasattr(value, '_prepare'): return value._prepare() return value._prepare(self) if lookup_type in { 'iexact', 'contains', 'icontains', Loading
django/db/models/query.py +7 −1 Original line number Diff line number Diff line Loading @@ -1108,12 +1108,18 @@ class QuerySet(object): for field, objects in other._known_related_objects.items(): self._known_related_objects.setdefault(field, {}).update(objects) def _prepare(self): def _prepare(self, field): if self._fields is not None: # values() queryset can only be used as nested queries # if they are set up to select only a single field. if len(self._fields or self.model._meta.concrete_fields) > 1: raise TypeError('Cannot use multi-field values as a filter value.') else: # If the query is used as a subquery for a ForeignKey with non-pk # target field, make sure to select the target field in the subquery. foreign_fields = getattr(field, 'foreign_related_fields', ()) if len(foreign_fields) == 1 and not foreign_fields[0].primary_key: return self.values(foreign_fields[0].name) return self def _as_sql(self, connection): Loading
django/db/models/sql/query.py +1 −1 Original line number Diff line number Diff line Loading @@ -235,7 +235,7 @@ class Query(object): memo[id(self)] = result return result def _prepare(self): def _prepare(self, field): return self def get_compiler(self, using=None, connection=None): Loading
docs/releases/1.9.3.txt +3 −0 Original line number Diff line number Diff line Loading @@ -21,3 +21,6 @@ Bugfixes * Fixed a regression for cases where ``ForeignObject.get_extra_descriptor_filter()`` returned a ``Q`` object (:ticket:`26153`). * Fixed regression with an ``__in=qs`` lookup for a ``ForeignKey`` with ``to_field`` set (:ticket:`26196`).