﻿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
23739	django 1.7.1 defer() throws AttributeError when using related_name	Farhan Ahammed	nobody	"I have attached a simple example project, with the following Models defined:
{{{
#!python
class ModelA(models.Model):
    name = models.CharField(max_length=255)

class ModelB(models.Model):
    name = models.CharField(max_length=255)
    model_a = models.ForeignKey(ModelA, related_name='model_b')
}}}

Entering the following code (in a Django shell) works fine:
{{{
#!python
ModelB.objects.filter(name='').select_related('model_a').defer('model_a__name')
}}}

But when I run the following:
{{{
#!python
ModelA.objects.filter(name='').select_related('model_b').defer('model_b__name')
}}}

I get this error message:
{{{
Traceback (most recent call last):
  File ""<console>"", line 1, in <module>
  File ""/home/fahammed/Documents/django_defer_bug/venv/local/lib/python2.7/site-packages/django/db/models/query.py"", line 116, in __repr__
    data = list(self[:REPR_OUTPUT_SIZE + 1])
  File ""/home/fahammed/Documents/django_defer_bug/venv/local/lib/python2.7/site-packages/django/db/models/query.py"", line 141, in __iter__
    self._fetch_all()
  File ""/home/fahammed/Documents/django_defer_bug/venv/local/lib/python2.7/site-packages/django/db/models/query.py"", line 966, in _fetch_all
    self._result_cache = list(self.iterator())
  File ""/home/fahammed/Documents/django_defer_bug/venv/local/lib/python2.7/site-packages/django/db/models/query.py"", line 222, in iterator
    only_load = self.query.get_loaded_field_names()
  File ""/home/fahammed/Documents/django_defer_bug/venv/local/lib/python2.7/site-packages/django/db/models/sql/query.py"", line 1821, in get_loaded_field_names
    self.deferred_to_data(collection, self.get_loaded_field_names_cb)
  File ""/home/fahammed/Documents/django_defer_bug/venv/local/lib/python2.7/site-packages/django/db/models/sql/query.py"", line 596, in deferred_to_data
    cur_model = source.rel.to
AttributeError: 'RelatedObject' object has no attribute 'rel'
}}}

Looks like defer doesn't work when you specify the related table using its {{{related_name}}}."	Cleanup/optimization	closed	Database layer (models, ORM)	1.7	Normal	invalid	defer related_name AttributeError RelatedObject rel		Accepted	0	0	0	0	0	0
