﻿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
14423	Wrong SQL on exclude with inheritance	PhiR_42	nobody	"I came across this on my inherited models. When I exclude using the base model qs, I get the expected results but when I do it from the derived model the null clause is left out. See below.

{{{
class TestBase(models.Model):
        test_field = models.DateField(null = True)

class TestDerived(TestBase):
        pass
}}}


{{{
>>> TestDerived.objects.create()
<TestDerived: TestDerived object>
>>> TestDerived.objects.create(test_field=datetime.date.today())
<TestDerived: TestDerived object>
>>> TestDerived.objects.exclude(test_field__lt = datetime.date.today())
[<TestDerived: TestDerived object>]
>>> TestBase.objects.exclude(test_field__lt = datetime.date.today())
[<TestBase: TestBase object>, <TestBase: TestBase object>]
}}}

{{{
>>> TestBase.objects.exclude(test_field__lt = datetime.date.today()).query.as_sql()
('SELECT `signets_testbase`.`id`, `signets_testbase`.`test_field` FROM `signets_testbase` WHERE NOT ((`signets_testbase`.`test_field` < %s  AND NOT (`signets_testbase`.`test_field` IS NULL)))', ('2010-10-08',))
>>> TestDerived.objects.exclude(test_field__lt = datetime.date.today()).query.as_sql()
('SELECT `signets_testbase`.`id`, `signets_testbase`.`test_field`, `signets_testderived`.`testbase_ptr_id` FROM `signets_testderived` INNER JOIN `signets_testbase` ON (`signets_testderived`.`testbase_ptr_id` = `signets_testbase`.`id`) WHERE NOT (`signets_testbase`.`test_field` < %s )', ('2010-10-08',))
}}}

"		closed	Database layer (models, ORM)	1.1		fixed	orm exclude inheritance		Accepted	1	0	0	1	0	0
