title: Django Model.objects.all() and Model.objects.get(pk=?) return two different results
body: <p>I have a basic model called <code>Restaurant</code></p>
  
  <pre><code>class Restaurant(models.Model):
      place = models.OneToOneField(Place, primary_key=True)
      serves_pizza = models.BooleanField()
      serves_hotdog = models.BooleanField()
  
      def __unicode__(self):
          return u'%s the restaurant' % self.place.name
  </code></pre>
  
  <p>Querying with <code>Restaurant.objects.all()</code> and <code>Restaurant.objects.get()</code> yields two different results in which only the former is correct.</p>
  
  <pre><code># this is correct
  &gt;&gt;&gt; r=Restaurant.objects.all()
  &gt;&gt;&gt; r
  [&lt;Restaurant: Hogwarts the restaurant&gt;, &lt;Restaurant: Domino the restaurant&gt;]
  &gt;&gt;&gt; r[0].serves_hotdog
  True
  
  # this is not correct
  &gt;&gt;&gt; r0=Restaurant.objects.get(pk=4556376185503744)
  &gt;&gt;&gt; r0.serves_hotdog
  False
  
  # although they have the same pk
  &gt;&gt;&gt; r0.pk == r[0].pk
  True
  # their property values are different
  &gt;&gt;&gt; r[0].serves_hotdog == r0.serves_hotdog
  False
  &gt;&gt;&gt; r[0].serves_pizza == r0.serves_pizza
  False
  </code></pre>
  
  <p>Has anyone seen anything similar to this?</p>