Refs #29095 -- Added test for using QuerySet.count() with window expressions ordered by related fields.

Fixed in 3f32154f40.
This commit is contained in:
Christopher G Johnson 2020-01-21 10:29:54 +01:00 committed by Mariusz Felisiak
parent 227d0c7365
commit 33ec01caaf
2 changed files with 13 additions and 0 deletions

View File

@ -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)

View File

@ -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(