summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher G Johnson <chris@clickonchris.com>2020-01-21 10:29:54 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-01-21 10:43:21 +0100
commit33ec01caaf57271d1820dc0ea90c5360287e305c (patch)
treee39e68939adfb7f86f81440d6fef597c4dd8ee05
parent227d0c7365cfd0a64d021cb9bdcf77bed2d3f170 (diff)
Refs #29095 -- Added test for using QuerySet.count() with window expressions ordered by related fields.
Fixed in 3f32154f40a855afa063095e3d091ce6be21f2c5.
-rw-r--r--tests/expressions_window/models.py5
-rw-r--r--tests/expressions_window/tests.py8
2 files changed, 13 insertions, 0 deletions
diff --git a/tests/expressions_window/models.py b/tests/expressions_window/models.py
index d6bb27644f..d479d1aea6 100644
--- a/tests/expressions_window/models.py
+++ b/tests/expressions_window/models.py
@@ -1,12 +1,17 @@
from django.db import models
+class Classification(models.Model):
+ code = models.CharField(max_length=10)
+
+
class Employee(models.Model):
name = models.CharField(max_length=40, blank=False, null=False)
salary = models.PositiveIntegerField()
department = models.CharField(max_length=40, blank=False, null=False)
hire_date = models.DateField(blank=False, null=False)
age = models.IntegerField(blank=False, null=False)
+ classification = models.ForeignKey('Classification', on_delete=models.CASCADE, null=True)
def __str__(self):
return '{}, {}, {}, {}'.format(self.name, self.department, self.salary, self.hire_date)
diff --git a/tests/expressions_window/tests.py b/tests/expressions_window/tests.py
index 37b0e95247..686594584f 100644
--- a/tests/expressions_window/tests.py
+++ b/tests/expressions_window/tests.py
@@ -537,6 +537,14 @@ class WindowFunctionTests(TestCase):
('Brown', 53000, 'Sales', datetime.date(2009, 9, 1), 108000),
], transform=lambda row: (row.name, row.salary, row.department, row.hire_date, row.sum))
+ def test_related_ordering_with_count(self):
+ qs = Employee.objects.annotate(department_sum=Window(
+ expression=Sum('salary'),
+ partition_by=F('department'),
+ order_by=['classification__code'],
+ ))
+ self.assertEqual(qs.count(), 12)
+
@skipUnlessDBFeature('supports_frame_range_fixed_distance')
def test_range_n_preceding_and_following(self):
qs = Employee.objects.annotate(sum=Window(