﻿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
12851	"Queryset ""defer"" won't work properly with select_related"	ruosteinen	ruosteinen	"Select_related and defer don't seem to work properly together. Consider following models in APP '''buggy'''.


{{{
from django.db import models

class ProblemModel(models.Model):
    name = models.CharField(max_length=100)
    target = models.ForeignKey('Target', null=True)

class Target(models.Model):
    location = models.CharField(max_length=100)

}}}


Even though Queryset API document the use of underscore in deferring, the following ends up in assertion error.


{{{
from buggy.models import Target, ProblemModel
Target.objects.all().delete(); ProblemModel.objects.all().delete()

tgt = Target.objects.create(location='Earth')
pm = ProblemModel.objects.create(name='bug', target=tgt)

pm = ProblemModel.objects.select_related('target').defer('target__location').get(name='bug')

assert pm.target.location == 'bug'


}}}

At least according to Queryset API docs, defer() is supposed to allow access to deferred fields even if they're not loaded initially.

In addition pm.target is not of type Target_Deferred_location_deferred as it should be(?). There seem to be some other weirdness as well with select_related and defer but they'll probably be fixed once nesting works properly.

This in Django 1.2 beta 1 SVN-12416


I'll start working on a patch right away.

-Tommi Penttinen-"		closed	Database layer (models, ORM)	1.2-beta		fixed	select_related, defer, only, nesting, query	Carl Meyer ruosteinen Gregor Müllegger	Accepted	1	0	0	0	0	0
