Skip to content

Commit

Permalink
Fixed #24744 - Fixed relabeled_clone for the Transform
Browse files Browse the repository at this point in the history
  • Loading branch information
coldmind authored and timgraham committed Jun 6, 2015
1 parent dee1bcd commit 08232ef
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 1 deletion.
7 changes: 6 additions & 1 deletion django/db/models/lookups.py
Expand Up @@ -70,8 +70,13 @@ def as_sql(self, compiler, connection):
def output_field(self):
return self.lhs.output_field

def copy(self):
return copy(self)

def relabeled_clone(self, relabels):
return self.__class__(self.lhs.relabeled_clone(relabels))
copy = self.copy()
copy.lhs = self.lhs.relabeled_clone(relabels)
return copy

def get_group_by_cols(self):
return self.lhs.get_group_by_cols()
Expand Down
2 changes: 2 additions & 0 deletions docs/releases/1.8.3.txt
Expand Up @@ -57,3 +57,5 @@ Bugfixes
* Corrected join promotion for multiple ``Case`` expressions. Annotating a
query with multiple ``Case`` expressions could unexpectedly filter out
results (:ticket:`24924`).

* Fixed usage of transforms in subqueries (:ticket:`24744`).
15 changes: 15 additions & 0 deletions tests/custom_lookups/tests.py
Expand Up @@ -559,3 +559,18 @@ def test_overridden_get_lookup_chain(self):
def test_overridden_get_transform_chain(self):
q = CustomModel.objects.filter(field__transformfunc_banana__transformfunc_pear=3)
self.assertIn('pear()', str(q.query))


class SubqueryTransformTests(TestCase):
def test_subquery_usage(self):
models.IntegerField.register_lookup(Div3Transform)
try:
Author.objects.create(name='a1', age=1)
a2 = Author.objects.create(name='a2', age=2)
Author.objects.create(name='a3', age=3)
Author.objects.create(name='a4', age=4)
self.assertQuerysetEqual(
Author.objects.order_by('name').filter(id__in=Author.objects.filter(age__div3=2)),
[a2], lambda x: x)
finally:
models.IntegerField._unregister_lookup(Div3Transform)

0 comments on commit 08232ef

Please sign in to comment.