title: Why do you have to set both id and pk to None to copy a Django model with inheritance?
body: <p>The Django docs recommend <a href="https://docs.djangoproject.com/en/1.4/topics/db/queries/#copying-model-instances" rel="noreferrer">copying a model instance</a> thus:</p>
  
  <pre><code>original.pk = None
  original.save()
  </code></pre>
  
  <p>But if you "use inheritance" -- apparently meaning if the model's class is a subclass of a subclass of <code>models.Model</code> -- you need to do it slightly differently. </p>
  
  <p>Specifically, the doc says: </p>
  
  <blockquote>
    <p>Due to how inheritance works, you have to set both pk and id to None:</p>
  </blockquote>
  
  <p>and gives an example analogous to this:</p>
  
  <pre><code>original.pk = None
  original.id = None
  original.save()
  </code></pre>
  
  <p>This seems kludgey. In any case, I'd like to understand what's going on. Why does using inheritance require you to set the <code>id</code> field to <code>None</code> also? Don't all Django models inherit from <code>models.Model</code> in any case? </p>
  
  <p>(NOTE: I'm omitting the bit from the doc about copying m2m fields, which incidentally seems even more kludgey.)</p>