title: Clone an inherited django model instance
body: <p>When I clone a django model instance I used to clean the 'pk' field.
  This seems not to work with an inherited model :</p>
  
  <p>Take this :</p>
  
  <pre><code>class ModelA(models.Model):
      info1 = models.CharField(max_length=64)
  
  class ModelB(ModelA):
      info2 = models.CharField(max_length=64)
  
  class ModelC(ModelB):
      info3 = models.CharField(max_length=64)
  </code></pre>
  
  <p>Now let's create an instance and clone it by the 'usual' way ( I am using a django shell ):</p>
  
  <pre><code>In [1]: c=ModelC(info1="aaa",info2="bbb",info3="ccc")
  
  In [2]: c.save()
  
  In [3]: c.pk
  Out[3]: 1L
  
  In [4]: c.pk=None  &lt;------ to clone
  
  In [5]: c.save()   &lt;------ should generate a new instance with a new index key
  
  In [6]: c.pk       
  Out[6]: 1L         &lt;------ but don't
  
  In [7]: ModelC.objects.all()
  Out[7]: [&lt;ModelC: ModelC object&gt;]   (only one instance !)
  </code></pre>
  
  <p>The only way I found was to do :</p>
  
  <pre><code>In [16]: c.pk =None
  
  In [17]: c.id=None
  
  In [21]: c.modela_ptr_id=None
  
  In [22]: c.modelb_ptr_id=None
  
  In [23]: c.save()
  
  In [24]: c.pk
  Out[24]: 2L    &lt;---- successful clone containing info1,info2,info3 from original instance
  
  In [25]: ModelC.objects.all()
  Out[25]: [&lt;ModelC: ModelC object&gt;, &lt;ModelC: ModelC object&gt;]
  </code></pre>
  
  <p>I find that very ugly, is there a more nice way to clone an instance from an inherited model ?</p>