mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #29865 -- Added logical XOR support for Q() and querysets.
This commit is contained in:
committed by
Mariusz Felisiak
parent
795da6306a
commit
c6b4d62fa2
@@ -1704,6 +1704,28 @@ class AggregationTests(TestCase):
|
||||
attrgetter("pk"),
|
||||
)
|
||||
|
||||
def test_filter_aggregates_xor_connector(self):
|
||||
q1 = Q(price__gt=50)
|
||||
q2 = Q(authors__count__gt=1)
|
||||
query = Book.objects.annotate(Count("authors")).filter(q1 ^ q2).order_by("pk")
|
||||
self.assertQuerysetEqual(
|
||||
query,
|
||||
[self.b1.pk, self.b4.pk, self.b6.pk],
|
||||
attrgetter("pk"),
|
||||
)
|
||||
|
||||
def test_filter_aggregates_negated_xor_connector(self):
|
||||
q1 = Q(price__gt=50)
|
||||
q2 = Q(authors__count__gt=1)
|
||||
query = (
|
||||
Book.objects.annotate(Count("authors")).filter(~(q1 ^ q2)).order_by("pk")
|
||||
)
|
||||
self.assertQuerysetEqual(
|
||||
query,
|
||||
[self.b2.pk, self.b3.pk, self.b5.pk],
|
||||
attrgetter("pk"),
|
||||
)
|
||||
|
||||
def test_ticket_11293_q_immutable(self):
|
||||
"""
|
||||
Splitting a q object to parts for where/having doesn't alter
|
||||
|
||||
Reference in New Issue
Block a user