mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #17027 -- Added support for the power operator in F expressions.
Thanks dan at dlo.me for the initial patch. - Added __pow__ and __rpow__ to ExpressionNode - Added oracle and mysql specific power expressions - Added used-defined power function for sqlite
This commit is contained in:
@@ -145,6 +145,13 @@ class ExpressionOperatorTests(TestCase):
|
||||
self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 58)
|
||||
self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(15.500, places=3))
|
||||
|
||||
def test_lefthand_power(self):
|
||||
# LH Powert arithmetic operation on floats and integers
|
||||
Number.objects.filter(pk=self.n.pk).update(integer=F('integer') ** 2,
|
||||
float=F('float') ** 1.5)
|
||||
self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 1764)
|
||||
self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(61.02, places=2))
|
||||
|
||||
def test_right_hand_addition(self):
|
||||
# Right hand operators
|
||||
Number.objects.filter(pk=self.n.pk).update(integer=15 + F('integer'),
|
||||
@@ -185,6 +192,13 @@ class ExpressionOperatorTests(TestCase):
|
||||
self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 27)
|
||||
self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(15.500, places=3))
|
||||
|
||||
def test_righthand_power(self):
|
||||
# RH Powert arithmetic operation on floats and integers
|
||||
Number.objects.filter(pk=self.n.pk).update(integer=2 ** F('integer'),
|
||||
float=1.5 ** F('float'))
|
||||
self.assertEqual(Number.objects.get(pk=self.n.pk).integer, 4398046511104)
|
||||
self.assertEqual(Number.objects.get(pk=self.n.pk).float, Approximate(536.308, places=3))
|
||||
|
||||
|
||||
class FTimeDeltaTests(TestCase):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user