Loading django/db/models/lookups.py +13 −2 Original line number Diff line number Diff line Loading @@ -78,14 +78,25 @@ class Transform(RegisterLookupMixin): def get_group_by_cols(self): return self.lhs.get_group_by_cols() def get_bilateral_transforms(self): if hasattr(self.lhs, 'get_bilateral_transforms'): bilateral_transforms = self.lhs.get_bilateral_transforms() else: bilateral_transforms = [] if self.bilateral: bilateral_transforms.append((self.__class__, self.init_lookups)) return bilateral_transforms class Lookup(RegisterLookupMixin): lookup_name = None def __init__(self, lhs, rhs, bilateral_transforms=None): def __init__(self, lhs, rhs): self.lhs, self.rhs = lhs, rhs self.rhs = self.get_prep_lookup() if bilateral_transforms is None: if hasattr(self.lhs, 'get_bilateral_transforms'): bilateral_transforms = self.lhs.get_bilateral_transforms() else: bilateral_transforms = [] if bilateral_transforms: # We should warn the user as soon as possible if he is trying to apply Loading django/db/models/sql/query.py +4 −7 Original line number Diff line number Diff line Loading @@ -1077,7 +1077,6 @@ class Query(object): and get_transform(). """ lookups = lookups[:] bilaterals = [] while lookups: name = lookups[0] # If there is just one part left, try first get_lookup() so Loading @@ -1089,21 +1088,19 @@ class Query(object): # We didn't find a lookup. We are going to interpret # the name as transform, and do an Exact lookup against # it. lhs = self.try_transform(lhs, name, lookups, bilaterals) lhs = self.try_transform(lhs, name, lookups) final_lookup = lhs.get_lookup('exact') return final_lookup(lhs, rhs, bilaterals) lhs = self.try_transform(lhs, name, lookups, bilaterals) return final_lookup(lhs, rhs) lhs = self.try_transform(lhs, name, lookups) lookups = lookups[1:] def try_transform(self, lhs, name, rest_of_lookups, bilaterals): def try_transform(self, lhs, name, rest_of_lookups): """ Helper method for build_lookup. Tries to fetch and initialize a transform for name parameter from lhs. """ next = lhs.get_transform(name) if next: if getattr(next, 'bilateral', False): bilaterals.append((next, rest_of_lookups)) return next(lhs, rest_of_lookups) else: raise FieldError( Loading Loading
django/db/models/lookups.py +13 −2 Original line number Diff line number Diff line Loading @@ -78,14 +78,25 @@ class Transform(RegisterLookupMixin): def get_group_by_cols(self): return self.lhs.get_group_by_cols() def get_bilateral_transforms(self): if hasattr(self.lhs, 'get_bilateral_transforms'): bilateral_transforms = self.lhs.get_bilateral_transforms() else: bilateral_transforms = [] if self.bilateral: bilateral_transforms.append((self.__class__, self.init_lookups)) return bilateral_transforms class Lookup(RegisterLookupMixin): lookup_name = None def __init__(self, lhs, rhs, bilateral_transforms=None): def __init__(self, lhs, rhs): self.lhs, self.rhs = lhs, rhs self.rhs = self.get_prep_lookup() if bilateral_transforms is None: if hasattr(self.lhs, 'get_bilateral_transforms'): bilateral_transforms = self.lhs.get_bilateral_transforms() else: bilateral_transforms = [] if bilateral_transforms: # We should warn the user as soon as possible if he is trying to apply Loading
django/db/models/sql/query.py +4 −7 Original line number Diff line number Diff line Loading @@ -1077,7 +1077,6 @@ class Query(object): and get_transform(). """ lookups = lookups[:] bilaterals = [] while lookups: name = lookups[0] # If there is just one part left, try first get_lookup() so Loading @@ -1089,21 +1088,19 @@ class Query(object): # We didn't find a lookup. We are going to interpret # the name as transform, and do an Exact lookup against # it. lhs = self.try_transform(lhs, name, lookups, bilaterals) lhs = self.try_transform(lhs, name, lookups) final_lookup = lhs.get_lookup('exact') return final_lookup(lhs, rhs, bilaterals) lhs = self.try_transform(lhs, name, lookups, bilaterals) return final_lookup(lhs, rhs) lhs = self.try_transform(lhs, name, lookups) lookups = lookups[1:] def try_transform(self, lhs, name, rest_of_lookups, bilaterals): def try_transform(self, lhs, name, rest_of_lookups): """ Helper method for build_lookup. Tries to fetch and initialize a transform for name parameter from lhs. """ next = lhs.get_transform(name) if next: if getattr(next, 'bilateral', False): bilaterals.append((next, rest_of_lookups)) return next(lhs, rest_of_lookups) else: raise FieldError( Loading