title: Django get_or_create method doesn't return exact object
body: <p>Here is my <code>models.py</code>:</p>
  
  <pre><code>class Foo(models.Model):
      id = models.IntegerField(primary_key=True)
      name = models.CharField(max_length=30)
  </code></pre>
  
  <p>In django <code>manage.py shell</code>:</p>
  
  <pre><code>&gt;&gt;&gt; a,b = Foo.objects.get_or_create(name='hi')
  &gt;&gt;&gt; b
  True
  &gt;&gt;&gt; vars(a)
  {'_state': &lt;django.db.models.base.ModelState object at 0x02761390&gt;, 'id': None,
  'name': 'hi'}
  </code></pre>
  
  <p>The problem here is the customized <code>id</code> attribute has no value. And if I continue to do the following:</p>
  
  <pre><code>&gt;&gt;&gt; c = foo.objects.get(name='hi')
  &gt;&gt;&gt; c.id
  1
  &gt;&gt;&gt; a is c
  False
  </code></pre>
  
  <p>So that newly created object (denoted by <code>c</code>) already exists now, but <code>b</code> is not an exact reference to it like <code>c</code> is.</p>
  
  <p>Is this a bug? My django version is 1.6.5.</p>