diff options
| author | Christopher G Johnson <chris@clickonchris.com> | 2020-01-21 10:29:54 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-01-21 10:43:21 +0100 |
| commit | 33ec01caaf57271d1820dc0ea90c5360287e305c (patch) | |
| tree | e39e68939adfb7f86f81440d6fef597c4dd8ee05 | |
| parent | 227d0c7365cfd0a64d021cb9bdcf77bed2d3f170 (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.py | 5 | ||||
| -rw-r--r-- | tests/expressions_window/tests.py | 8 |
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( |
