#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.

Reply via email to