#14423: Wrong SQL on exclude with inheritance ------------------------------------------+--------------------------------- Reporter: PhiR_42 | Owner: nobody Status: new | Milestone: Component: Database layer (models, ORM) | Version: 1.1 Keywords: orm exclude inheritance | Stage: Unreviewed Has_patch: 0 | ------------------------------------------+--------------------------------- 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',)) }}} -- Ticket URL: <http://code.djangoproject.com/ticket/14423> Django <http://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To post to this group, send email to django-upda...@googlegroups.com. To unsubscribe from this group, send email to django-updates+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-updates?hl=en.