Kaydet (Commit) 08232ef8 authored tarafından Andriy Sokolovskiy's avatar Andriy Sokolovskiy Kaydeden (comit) Tim Graham

Fixed #24744 - Fixed relabeled_clone for the Transform

üst dee1bcd0
......@@ -70,8 +70,13 @@ class Transform(RegisterLookupMixin):
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()
......
......@@ -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`).
......@@ -559,3 +559,18 @@ class CustomisedMethodsTests(TestCase):
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)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment