Fixed #29066 -- Allowed negating query expressions.
This commit is contained in:
parent
6b2f8fb91c
commit
617d5f410f
1
AUTHORS
1
AUTHORS
|
@ -662,6 +662,7 @@ answer newbie questions, and generally made Django that much better:
|
|||
pradeep.gowda@gmail.com
|
||||
Preston Holmes <preston@ptone.com>
|
||||
Preston Timmons <prestontimmons@gmail.com>
|
||||
Priyansh Saxena <askpriyansh@gmail.com>
|
||||
Rachel Tobin <rmtobin@me.com>
|
||||
Rachel Willmer <http://www.willmer.com/kb/>
|
||||
Radek Švarz <http://www.svarz.cz/translate/>
|
||||
|
|
|
@ -65,6 +65,9 @@ class Combinable:
|
|||
# OPERATORS #
|
||||
#############
|
||||
|
||||
def __neg__(self):
|
||||
return self._combine(-1, self.MUL, False)
|
||||
|
||||
def __add__(self, other):
|
||||
return self._combine(other, self.ADD, False)
|
||||
|
||||
|
|
|
@ -13,9 +13,13 @@ more complex computations.
|
|||
Supported arithmetic
|
||||
====================
|
||||
|
||||
Django supports addition, subtraction, multiplication, division, modulo
|
||||
arithmetic, and the power operator on query expressions, using Python constants,
|
||||
variables, and even other expressions.
|
||||
Django supports negation, addition, subtraction, multiplication, division,
|
||||
modulo arithmetic, and the power operator on query expressions, using Python
|
||||
constants, variables, and even other expressions.
|
||||
|
||||
.. versionchanged:: 2.1
|
||||
|
||||
Support for negation was added.
|
||||
|
||||
Some examples
|
||||
=============
|
||||
|
|
|
@ -178,6 +178,8 @@ Models
|
|||
:class:`~django.db.models.DateField` and
|
||||
:class:`~django.db.models.DateTimeField` to the Monday of a week.
|
||||
|
||||
* Query expressions can now be negated using a minus sign.
|
||||
|
||||
Requests and Responses
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
|
|
@ -1425,6 +1425,10 @@ class ReprTests(TestCase):
|
|||
class CombinableTests(SimpleTestCase):
|
||||
bitwise_msg = 'Use .bitand() and .bitor() for bitwise logical operations.'
|
||||
|
||||
def test_negation(self):
|
||||
c = Combinable()
|
||||
self.assertEqual(-c, c * -1)
|
||||
|
||||
def test_and(self):
|
||||
with self.assertRaisesMessage(NotImplementedError, self.bitwise_msg):
|
||||
Combinable() & Combinable()
|
||||
|
|
Loading…
Reference in New Issue