﻿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
25173	multi-table inheritance: accessing child object after select_related('child') causes extra query	Sebastian Illing	nobody	"I have the following in models and run into strange behavior when i use select_related and model inheritance:

Models:
{{{
class A(models.Model):
    field_fk = models.ForeignKey('C')

class B(A):
    fields_b = models.CharField(max_length=255)

class C(models.Model):
    field_c = models.CharField(max_length=255)
}}}

So A has a foreign key to C and B inherits from A. Now I want to query A downcast it to B and read the relationship to C. To minimize sql queries I use select_related:

{{{
obj = A.objects.select_related('b', 'field_fk).first()
obj = obj.b          
print(obj.field_fk)  # this prints ""C object""
}}}

Because I use select_related this should result in just one query. But somehow the information is lost during downcasting and I get two sql queries:

{{{
SELECT ••• FROM ""base_a"" INNER JOIN ""base_c"" ON 
      ( ""base_a"".""field_fk_id"" = ""base_c"".""id"" ) LEFT OUTER JOIN ""base_b"" ON 
      ( ""base_a"".""id"" = ""base_b"".""a_ptr_id"" ) ORDER BY ""base_a"".""id"" ASC LIMIT 1

SELECT ••• FROM ""base_c"" WHERE ""base_c"".""id"" = 1
}}}

So in the first query looks fine. But I am surprised that I get a second query. Is this a bug in django's ORM or am I doing something wrong?

I also posted this at stackoverflow, but I am quite sure that this is a bug.
http://stackoverflow.com/questions/31628588/django-model-inheritance-and-select-related
"	Bug	closed	Database layer (models, ORM)	1.8	Normal	duplicate	ORM, select_related, model inheritance		Accepted	0	0	0	0	0	0
