Loading django/contrib/gis/db/models/lookups.py +3 −3 Original line number Diff line number Diff line Loading @@ -57,13 +57,13 @@ class GISLookup(Lookup): if not geo_fld: raise ValueError('No geographic field found in expression.') self.rhs.srid = geo_fld.srid db_type = self.lhs.output_type.db_type(connection=connection) params = self.lhs.output_type.get_db_prep_lookup( db_type = self.lhs.output_field.db_type(connection=connection) params = self.lhs.output_field.get_db_prep_lookup( self.lookup_name, self.rhs, connection=connection) lhs_sql, lhs_params = self.process_lhs(qn, connection) # lhs_params not currently supported. assert not lhs_params data = (lhs_sql, db_type) spatial_sql, spatial_params = connection.ops.spatial_lookup_sql( data, self.lookup_name, self.rhs, self.lhs.output_type, qn) data, self.lookup_name, self.rhs, self.lhs.output_field, qn) return spatial_sql, spatial_params + params django/contrib/postgres/fields/array.py +2 −2 Original line number Diff line number Diff line Loading @@ -195,7 +195,7 @@ class ArrayLenTransform(Transform): lookup_name = 'len' @property def output_type(self): def output_field(self): return IntegerField() def as_sql(self, qn, connection): Loading @@ -218,7 +218,7 @@ class IndexTransform(Transform): return '%s[%s]' % (lhs, self.index), params @property def output_type(self): def output_field(self): return self.base_field Loading django/db/models/lookups.py +12 −12 Original line number Diff line number Diff line Loading @@ -26,16 +26,16 @@ class RegisterLookupMixin(object): def get_lookup(self, lookup_name): found = self._get_lookup(lookup_name) if found is None and hasattr(self, 'output_type'): return self.output_type.get_lookup(lookup_name) if found is None and hasattr(self, 'output_field'): return self.output_field.get_lookup(lookup_name) if found is not None and not issubclass(found, Lookup): return None return found def get_transform(self, lookup_name): found = self._get_lookup(lookup_name) if found is None and hasattr(self, 'output_type'): return self.output_type.get_transform(lookup_name) if found is None and hasattr(self, 'output_field'): return self.output_field.get_transform(lookup_name) if found is not None and not issubclass(found, Transform): return None return found Loading Loading @@ -64,8 +64,8 @@ class Transform(RegisterLookupMixin): raise NotImplementedError @cached_property def output_type(self): return self.lhs.output_type def output_field(self): return self.lhs.output_field def relabeled_clone(self, relabels): return self.__class__(self.lhs.relabeled_clone(relabels)) Loading @@ -82,11 +82,11 @@ class Lookup(RegisterLookupMixin): self.rhs = self.get_prep_lookup() def get_prep_lookup(self): return self.lhs.output_type.get_prep_lookup(self.lookup_name, self.rhs) return self.lhs.output_field.get_prep_lookup(self.lookup_name, self.rhs) def get_db_prep_lookup(self, value, connection): return ( '%s', self.lhs.output_type.get_db_prep_lookup( '%s', self.lhs.output_field.get_db_prep_lookup( self.lookup_name, value, connection, prepared=True)) def process_lhs(self, qn, connection, lhs=None): Loading Loading @@ -138,8 +138,8 @@ class BuiltinLookup(Lookup): def process_lhs(self, qn, connection, lhs=None): lhs_sql, params = super(BuiltinLookup, self).process_lhs( qn, connection, lhs) field_internal_type = self.lhs.output_type.get_internal_type() db_type = self.lhs.output_type.db_type(connection=connection) field_internal_type = self.lhs.output_field.get_internal_type() db_type = self.lhs.output_field.db_type(connection=connection) lhs_sql = connection.ops.field_cast_sql( db_type, field_internal_type) % lhs_sql lhs_sql = connection.ops.lookup_cast(self.lookup_name) % lhs_sql Loading Loading @@ -203,7 +203,7 @@ class In(BuiltinLookup): lookup_name = 'in' def get_db_prep_lookup(self, value, connection): params = self.lhs.output_type.get_db_prep_lookup( params = self.lhs.output_field.get_db_prep_lookup( self.lookup_name, value, connection, prepared=True) if not params: # TODO: check why this leads to circular import Loading Loading @@ -299,7 +299,7 @@ class DateLookup(BuiltinLookup): def process_lhs(self, qn, connection, lhs=None): from django.db.models import DateTimeField lhs, params = super(DateLookup, self).process_lhs(qn, connection, lhs) if isinstance(self.lhs.output_type, DateTimeField): if isinstance(self.lhs.output_field, DateTimeField): tzname = timezone.get_current_timezone_name() if settings.USE_TZ else None sql, tz_params = connection.ops.datetime_extract_sql(self.extract_type, lhs, tzname) return connection.ops.lookup_cast(self.lookup_name) % sql, tz_params Loading django/db/models/sql/aggregates.py +1 −1 Original line number Diff line number Diff line Loading @@ -103,7 +103,7 @@ class Aggregate(RegisterLookupMixin): return [] @property def output_type(self): def output_field(self): return self.field Loading django/db/models/sql/datastructures.py +3 −3 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ class Col(object): return "%s.%s" % (qn(self.alias), qn(self.target.column)), [] @property def output_type(self): def output_field(self): return self.source def relabeled_clone(self, relabels): Loading @@ -22,10 +22,10 @@ class Col(object): return [(self.alias, self.target.column)] def get_lookup(self, name): return self.output_type.get_lookup(name) return self.output_field.get_lookup(name) def get_transform(self, name): return self.output_type.get_transform(name) return self.output_field.get_transform(name) def prepare(self): return self Loading Loading
django/contrib/gis/db/models/lookups.py +3 −3 Original line number Diff line number Diff line Loading @@ -57,13 +57,13 @@ class GISLookup(Lookup): if not geo_fld: raise ValueError('No geographic field found in expression.') self.rhs.srid = geo_fld.srid db_type = self.lhs.output_type.db_type(connection=connection) params = self.lhs.output_type.get_db_prep_lookup( db_type = self.lhs.output_field.db_type(connection=connection) params = self.lhs.output_field.get_db_prep_lookup( self.lookup_name, self.rhs, connection=connection) lhs_sql, lhs_params = self.process_lhs(qn, connection) # lhs_params not currently supported. assert not lhs_params data = (lhs_sql, db_type) spatial_sql, spatial_params = connection.ops.spatial_lookup_sql( data, self.lookup_name, self.rhs, self.lhs.output_type, qn) data, self.lookup_name, self.rhs, self.lhs.output_field, qn) return spatial_sql, spatial_params + params
django/contrib/postgres/fields/array.py +2 −2 Original line number Diff line number Diff line Loading @@ -195,7 +195,7 @@ class ArrayLenTransform(Transform): lookup_name = 'len' @property def output_type(self): def output_field(self): return IntegerField() def as_sql(self, qn, connection): Loading @@ -218,7 +218,7 @@ class IndexTransform(Transform): return '%s[%s]' % (lhs, self.index), params @property def output_type(self): def output_field(self): return self.base_field Loading
django/db/models/lookups.py +12 −12 Original line number Diff line number Diff line Loading @@ -26,16 +26,16 @@ class RegisterLookupMixin(object): def get_lookup(self, lookup_name): found = self._get_lookup(lookup_name) if found is None and hasattr(self, 'output_type'): return self.output_type.get_lookup(lookup_name) if found is None and hasattr(self, 'output_field'): return self.output_field.get_lookup(lookup_name) if found is not None and not issubclass(found, Lookup): return None return found def get_transform(self, lookup_name): found = self._get_lookup(lookup_name) if found is None and hasattr(self, 'output_type'): return self.output_type.get_transform(lookup_name) if found is None and hasattr(self, 'output_field'): return self.output_field.get_transform(lookup_name) if found is not None and not issubclass(found, Transform): return None return found Loading Loading @@ -64,8 +64,8 @@ class Transform(RegisterLookupMixin): raise NotImplementedError @cached_property def output_type(self): return self.lhs.output_type def output_field(self): return self.lhs.output_field def relabeled_clone(self, relabels): return self.__class__(self.lhs.relabeled_clone(relabels)) Loading @@ -82,11 +82,11 @@ class Lookup(RegisterLookupMixin): self.rhs = self.get_prep_lookup() def get_prep_lookup(self): return self.lhs.output_type.get_prep_lookup(self.lookup_name, self.rhs) return self.lhs.output_field.get_prep_lookup(self.lookup_name, self.rhs) def get_db_prep_lookup(self, value, connection): return ( '%s', self.lhs.output_type.get_db_prep_lookup( '%s', self.lhs.output_field.get_db_prep_lookup( self.lookup_name, value, connection, prepared=True)) def process_lhs(self, qn, connection, lhs=None): Loading Loading @@ -138,8 +138,8 @@ class BuiltinLookup(Lookup): def process_lhs(self, qn, connection, lhs=None): lhs_sql, params = super(BuiltinLookup, self).process_lhs( qn, connection, lhs) field_internal_type = self.lhs.output_type.get_internal_type() db_type = self.lhs.output_type.db_type(connection=connection) field_internal_type = self.lhs.output_field.get_internal_type() db_type = self.lhs.output_field.db_type(connection=connection) lhs_sql = connection.ops.field_cast_sql( db_type, field_internal_type) % lhs_sql lhs_sql = connection.ops.lookup_cast(self.lookup_name) % lhs_sql Loading Loading @@ -203,7 +203,7 @@ class In(BuiltinLookup): lookup_name = 'in' def get_db_prep_lookup(self, value, connection): params = self.lhs.output_type.get_db_prep_lookup( params = self.lhs.output_field.get_db_prep_lookup( self.lookup_name, value, connection, prepared=True) if not params: # TODO: check why this leads to circular import Loading Loading @@ -299,7 +299,7 @@ class DateLookup(BuiltinLookup): def process_lhs(self, qn, connection, lhs=None): from django.db.models import DateTimeField lhs, params = super(DateLookup, self).process_lhs(qn, connection, lhs) if isinstance(self.lhs.output_type, DateTimeField): if isinstance(self.lhs.output_field, DateTimeField): tzname = timezone.get_current_timezone_name() if settings.USE_TZ else None sql, tz_params = connection.ops.datetime_extract_sql(self.extract_type, lhs, tzname) return connection.ops.lookup_cast(self.lookup_name) % sql, tz_params Loading
django/db/models/sql/aggregates.py +1 −1 Original line number Diff line number Diff line Loading @@ -103,7 +103,7 @@ class Aggregate(RegisterLookupMixin): return [] @property def output_type(self): def output_field(self): return self.field Loading
django/db/models/sql/datastructures.py +3 −3 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ class Col(object): return "%s.%s" % (qn(self.alias), qn(self.target.column)), [] @property def output_type(self): def output_field(self): return self.source def relabeled_clone(self, relabels): Loading @@ -22,10 +22,10 @@ class Col(object): return [(self.alias, self.target.column)] def get_lookup(self, name): return self.output_type.get_lookup(name) return self.output_field.get_lookup(name) def get_transform(self, name): return self.output_type.get_transform(name) return self.output_field.get_transform(name) def prepare(self): return self Loading