title: Why doesn't django automatically update the foreign key? (obj.relative.id != obj.relative_id)
body: <p>I have code like this (Django 1.4.3):</p>
  
  <pre><code>class Peon(models.Model)
    # ...
    order = models.ForeignKey(Order, db_column='idOrder')
    # ... 
  
    def save(self, *args, **kwargs):
      if self.order_id is None:
        self.order = Order()
  
      #edit self.order's fields appropriately
      self.order.generate(...)
  
      self.order.save()
  
      super(Peon, self).save(*args, **kwargs)
  </code></pre>
  
  <p>super().save() complains that the order doesn't exist.</p>
  
  <p>In other words, self.order_id remains None even when self.order.pk is set, and this prevents me from saving self.</p>
  
  <p>My fix was to do this before calling super().save():</p>
  
  <pre><code>self.order_id = self.order.pk
  </code></pre>
  
  <p>My question is, why is this necessary? It feels like self.order.save() should automatically update the foreign key, but there must be a good reason why it doesn't.</p>