title: Access primary key/id value during creation of a Django record
body: <p>For my model I use default auto-incremented <code>PrimaryKey/id</code> field. I also have a field called <code>serialNumber</code> which according to design should reference <code>id</code> and generate it's own value based on <code>id</code> value.
  For example if <code>id</code> is <code>1234</code> then <code>serialNumber</code> field should be a string <code>'00001234'</code>.</p>
  
  <pre><code>class MyModel(models.Model):
      ...
      serialNumber = models.TextField(max_length=8)
      ...
  </code></pre>
  
  <p>I have no trouble updating <code>serialNumber</code> after the creation of record in DB, but my specific case requires <code>serialNumber</code> to be set together with object initial creation because right after it I return the record via <code>REST API</code>.</p>
  
  <p>I tried using <code>signals</code>, but pre_save returns <code>None</code></p>
  
  <pre><code>@receiver(pre_save, sender=MyModel)
  def my_pre_save(sender, instance, **kwargs):
      print(instance.id)
  </code></pre>
  
  <p>On the other hand if I do: </p>
  
  <pre><code>@receiver(post_save, sender=MyModel)
  def my_post_save(sender, instance, **kwargs):
      print(instance.id)
  </code></pre>
  
  <p>I receive the value for <code>id</code> but it's too late because right after <code>.save()</code> my <code>REST API</code> returns response with created object and I don't want to add code that manages <code>serialNumber</code> to serializer. </p>
  
  <p>Overriding <code>.save()</code> method for <code>MyModel</code> didn't work either:</p>
  
  <pre><code>    def save(self, *args, **kwargs):
          print(self.id)
          super(MyModel, self).save(*args, **kwargs)
  </code></pre>
  
  <p><code>Id</code> field still returns <code>None</code>.</p>
  
  <p>Anyone has an idea how to access <code>id</code> value during initial creation of a record?</p>