title: Django post_save signal seemingly triggered only on 2nd save or after
body: <p>So I'm using a signal-triggered function on <code>post_save</code> to create instances of another model when the the first is saved:</p>
  
  <p>The model triggering the signal:</p>
  
  <pre><code>class Product(models.Model):
      # ...
      colors = models.ManyToManyField(Color)
      sizes = models.ManyToManyField(Size)
  </code></pre>
  
  <p>And the function:</p>
  
  <pre><code>def create_skus(instance, **kwargs):
      for color in instance.colors.select_related():
          for size in instance.colors.select_related():
              SKU.objects.get_or_create(product=instance, color=color, size=size)
  </code></pre>
  
  <p>My issue is that <code>create_skus</code> should be called on post_save every time, but only seems to work on the 2nd save or after, resulting in users have to save a Product twice. What is the origin of this?</p>
  
  <p><strong>EDIT</strong>: I think this has something to do with how these M2M relations are added (i.e. <code>instance.colors.add(&lt;Color object&gt;)</code> but I'm not sure, and if you know of a workaround, I'd love you forever.</p>