소스 검색

Removed obsolete Lookup hook to prepare rhs expressions.

After 3a505c70e7b228bf1212c067a8f38271ca86ce09, all _prepare() methods
return self.
Simon Charette 6 년 전
부모
커밋
5935a9aead
4개의 변경된 파일5개의 추가작업 그리고 21개의 파일을 삭제
  1. 1 2
      django/contrib/postgres/fields/array.py
  2. 0 10
      django/db/models/expressions.py
  3. 4 6
      django/db/models/lookups.py
  4. 0 3
      django/db/models/sql/query.py

+ 1 - 2
django/contrib/postgres/fields/array.py

@@ -240,8 +240,7 @@ class ArrayLenTransform(Transform):
 class ArrayInLookup(In):
     def get_prep_lookup(self):
         values = super().get_prep_lookup()
-        if hasattr(self.rhs, '_prepare'):
-            # Subqueries don't need further preparation.
+        if hasattr(values, 'resolve_expression'):
             return values
         # In.process_rhs() expects values to be hashable, so convert lists
         # to tuples.

+ 0 - 10
django/db/models/expressions.py

@@ -245,10 +245,6 @@ class BaseExpression:
         ])
         return c
 
-    def _prepare(self, field):
-        """Hook used by Lookup.get_prep_lookup() to do custom preparation."""
-        return self
-
     @property
     def field(self):
         return self.output_field
@@ -537,9 +533,6 @@ class ResolvedOuterRef(F):
             'only be used in a subquery.'
         )
 
-    def _prepare(self, output_field=None):
-        return self
-
     def relabeled_clone(self, relabels):
         return self
 
@@ -551,9 +544,6 @@ class OuterRef(F):
             return self.name
         return ResolvedOuterRef(self.name)
 
-    def _prepare(self, output_field=None):
-        return self
-
 
 class Func(SQLiteNumericMixin, Expression):
     """An SQL function call."""

+ 4 - 6
django/db/models/lookups.py

@@ -64,8 +64,8 @@ class Lookup:
             self.lhs, self.rhs = new_exprs
 
     def get_prep_lookup(self):
-        if hasattr(self.rhs, '_prepare'):
-            return self.rhs._prepare(self.lhs.output_field)
+        if hasattr(self.rhs, 'resolve_expression'):
+            return self.rhs
         if self.prepare_rhs and hasattr(self.lhs.output_field, 'get_prep_value'):
             return self.lhs.output_field.get_prep_value(self.rhs)
         return self.rhs
@@ -195,11 +195,9 @@ class FieldGetDbPrepValueIterableMixin(FieldGetDbPrepValueMixin):
     get_db_prep_lookup_value_is_iterable = True
 
     def get_prep_lookup(self):
+        if hasattr(self.rhs, 'resolve_expression'):
+            return self.rhs
         prepared_values = []
-        if hasattr(self.rhs, '_prepare'):
-            # A subquery is like an iterable but its items shouldn't be
-            # prepared independently.
-            return self.rhs._prepare(self.lhs.output_field)
         for rhs_value in self.rhs:
             if hasattr(rhs_value, 'resolve_expression'):
                 # An expression will be handled by the database but can coexist

+ 0 - 3
django/db/models/sql/query.py

@@ -271,9 +271,6 @@ class Query(BaseExpression):
         memo[id(self)] = result
         return result
 
-    def _prepare(self, field):
-        return self
-
     def get_compiler(self, using=None, connection=None):
         if using is None and connection is None:
             raise ValueError("Need either using or connection")