title: Replace Django model object with another
body: <p>I'm working on an application where we have to review model changes before accepting them.</p>
  
  <p>For this, when a user edits one of the company model objects in the app frontend, the form's initial data is filled with data from the original object and then stored into a new object that is flagged using the <code>origin_company</code> field (which is a foreign key to the previous version of the object).</p>
  
  <p>So basically when someone edits a company, a new, inactive company is created.</p>
  
  <p>To apply the changes, I want to copy all data from the changed company to the original company. (I'm doing this with custom django-admin actions.) The easiest way would probably be to start a transaction, delete the original company and change the primary key of the changed company to match the original company. But by doing that, the changed company is not UPDATEd, it is copied. And related database entries (FKs) are not updated either.</p>
  
  <p>Is there an easy way to copy or move all data (including FK relations) from one model instance to another one? Or is my entire way of solving this problem messed up?</p>
  
  <p>Here's the model definition:</p>
  
  <pre><code>class Company(models.Model):
      company_name = models.CharField(max_length=150)
      ...
      origin_company = models.ForeignKey('self', related_name=u'CompanyEdits',
              null=True, blank=True, default=None)
  </code></pre>