mirror of https://github.com/django/django.git
Fixed #24744 - Fixed relabeled_clone for the Transform
This commit is contained in:
parent
dee1bcd08a
commit
08232ef84d
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue