﻿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
16572	select_related doesn't work (silent/masked TypeError) over multiple one-to-one relationships	rfrankel	nobody	"Given this models.py:

{{{
from django.db import models

class A(models.Model):
    pass

class B(A):
    pass

class C(B):
    pass
}}}

The following select_related call returns an apparently empty queryset:


{{{
>>> A.objects.select_related('b__c')
[]
}}}

Digging a little deeper:


{{{
>>> A.objects.select_related('b__c').__iter__().next()
... 
Traceback (most recent call last):
  File ""<console>"", line 1, in <module>
  File ""/opt/webapps/asdf/lib/python2.6/site-packages/django/db/models/query.py"", line 107, in _result_iter
    self._fill_cache()
  File ""/opt/webapps/asdf/lib/python2.6/site-packages/django/db/models/query.py"", line 772, in _fill_cache
    self._result_cache.append(self._iter.next())
  File ""/opt/webapps/asdf/lib/python2.6/site-packages/django/db/models/query.py"", line 273, in iterator
    for row in compiler.results_iter():
  File ""/opt/webapps/asdf/lib/python2.6/site-packages/django/db/models/sql/compiler.py"", line 680, in results_iter
    for rows in self.execute_sql(MULTI):
  File ""/opt/webapps/asdf/lib/python2.6/site-packages/django/db/models/sql/compiler.py"", line 725, in execute_sql
    sql, params = self.as_sql()
  File ""/opt/webapps/asdf/lib/python2.6/site-packages/django/db/models/sql/compiler.py"", line 58, in as_sql
    self.pre_sql_setup()
  File ""/opt/webapps/asdf/lib/python2.6/site-packages/django/db/models/sql/compiler.py"", line 29, in pre_sql_setup
    self.fill_related_selections()
  File ""/opt/webapps/asdf/lib/python2.6/site-packages/django/db/models/sql/compiler.py"", line 661, in fill_related_selections
    used, next, restricted, new_nullable)
  File ""/opt/webapps/asdf/lib/python2.6/site-packages/django/db/models/sql/compiler.py"", line 617, in fill_related_selections
    chain = opts.get_base_chain(f.rel.to)
  File ""/opt/webapps/asdf/lib/python2.6/site-packages/django/db/models/options.py"", line 452, in get_base_chain
    % model._meta.module_name,)
TypeError: 'b' is not an ancestor of this model
>>>
}}}
 
This was a little too deep in Django's internals for me to be able to debug, but as far as I can tell it's a legit bug."	Bug	closed	Database layer (models, ORM)	1.3	Normal	fixed	select_related orm queryset	firdaus_halim patrys@… charette.s@… mike@… dvd0101 lorin@…	Accepted	1	0	0	0	0	0
