title: Django Query set defer and only not working
body: <p>I have a 2 models, a house and a message.  A message has FK to a house:</p>
  <pre><code>model House:
     attribute1 = models.CharField(&quot;&quot;)
     ...more stuff...
  
  model Message:
     house = models.ForeignKey(House)
     ...more stuff...
  </code></pre>
  <p>I created 15 messages all with house_id = 3 using: Message(house_id = 3).save()</p>
  <p>My problem is how slow the query is taking.  When I do:</p>
  <pre><code>Message.objects.filter(house_id = 3)
  </code></pre>
  <p>I get the following queries:</p>
  <pre><code>{u'time': u'0.030', u'sql': u'SELECT `home_message`.`id`, `home_message`.`house_id`,       FROM `home_message` WHERE `home_message`.`house_id` = 3 '}
  {u'time': u'0.027', u'sql': u'SELECT `home_house`.`id`, `home_house`.`is_active`,  FROM `home_house` WHERE `home_house`.`id` = 3 '}
  {u'time': u'0.027', u'sql': u'SELECT `home_house`.`id`, `home_house`.`is_active`,  FROM `home_house` WHERE `home_house`.`id` = 3 '}
  {u'time': u'0.027', u'sql': u'SELECT `home_house`.`id`, `home_house`.`is_active`,  FROM `home_house` WHERE `home_house`.`id` = 3 '}
  </code></pre>
  <p>... (15 times, one for each message)</p>
  <p>So I am seeing that I get a database query for EVERY house_id in my Message.  Note that I only query for Messages ONCE (as expected).</p>
  <p>Obviously this is rather slow, so I try:</p>
  <pre><code>Message.objects.filter(house_id = 3).defer('house') 
  </code></pre>
  <p>Surprisingly this made it worse.  The queries are now:</p>
  <pre><code>{u'time': u'0.028', u'sql': u'SELECT `home_message`.`id` FROM `home_message` WHERE `home_message`.`house_id` = 3 '}
  {u'time': u'0.024', u'sql': u'SELECT `home_message`.`id`, `home_message`.`house_id` FROM `home_message` WHERE `home_message`.`id` = 1 '}
  {u'time': u'0.027', u'sql': u'SELECT `home_house`.`id`, `home_house`.`is_active`, ` FROM `home_house` WHERE `home_house`.`id` = 3 '}
  {u'time': u'0.024', u'sql': u'SELECT `home_message`.`id`, `home_message`.`house_id` FROM `home_message` WHERE `home_message`.`id` = 2 '}
  {u'time': u'0.027', u'sql': u'SELECT `home_house`.`id`, `home_house`.`is_active`, ` FROM `home_house` WHERE `home_house`.`id` = 3 '}
  ...x15...
  </code></pre>
  <p>I am now making a query for EACH message individually AND for each house foreign key - essentially doubling the number of calls.</p>
  <p>That did not work.  So now I try the django &quot;only&quot;.</p>
  <pre><code>Message.objects.filter(house_id = house_id).only(&quot;id&quot;).  # only get id!
  </code></pre>
  <p>The queries I am now sending:</p>
  <pre><code>{u'time': u'0.025', u'sql': u'SELECT `home_message`.`id` FROM `home_message` WHERE `home_message`.`house_id` = 3 '}
  {u'time': u'0.024', u'sql': u'SELECT `home_message`.`id`, `home_message`.`house_id` FROM `home_message` WHERE `home_message`.`id` = 1 '}
  {u'time': u'0.026', u'sql': u'SELECT `home_house`.`id`, `home_house`.`is_active`,  WHERE `home_house`.`id` = 3 '}
  {u'time': u'0.024', u'sql': u'SELECT `home_message`.`id`, `home_message`.`house_id` FROM `home_message` WHERE `home_message`.`id` = 2 '}
  {u'time': u'0.026', u'sql': u'SELECT `home_house`.`id`, `home_house`.`is_active`,  WHERE `home_house`.`id` = 3 '}
  </code></pre>
  <p>...x15...</p>
  <p>So once again, I am getting the dreaded house object query and another query for full Message by id (like the defer command).</p>
  <p>I do not understand if this is the correct behavior for ONLY and DEFER.  I wish to only get the information (as an object, or I would use &quot;values&quot; - which does work btw.) without evaluating the FK.</p>
  <p>Edit:</p>
  <p>The error was in the <strong>unicode</strong> where I called
  return self.house</p>