﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
30668	Filter by window expression should raise a descriptive error.	Alex Aktsipetrov	Alex Aktsipetrov	"Django has a check that filter does not contain window expressions. 
But it is shallow, neither right side of the expression nor combined expressions are checked.

{{{
class Employee(models.Model):
    grade = models.IntegerField()

# raises NotSupportedError
Employee.objects.annotate(
    prev_grade=Window(expression=Lag('grade'))
).filter(prev_grade=F('grade'))

# Do not raise anything, fail on database backend once executed.
Employee.objects.annotate(
    prev_grade=Window(expression=Lag('grade'))
).filter(grade=F('prev_grade'))
Employee.objects.annotate(
    prev_grade=Window(expression=Lag('grade')),
    dec_grade=F('prev_grade') - Value(1)
).filter(dec_grade=F('grade'))
}}}
"	Cleanup/optimization	closed	Database layer (models, ORM)	dev	Normal	fixed	window filter	Mads Jensen	Ready for checkin	1	0	0	0	0	0
