title: self.delete() gives error: "instance needs to have a primary key value before a many-to-many relationship can be used"
body: <p>I have three models. We'll call them Mod1, Mod1Request, and UserProfile.</p>
  
  <p>Mod1Request looks like:</p>
  
  <pre><code>class Mod1Request(models.Model):
  date_requested = models.DateField(auto_now_add=True)
  mod1s = models.ManyToManyField('Mod1')
  user = models.ForeignKey(User)
  approved = models.BooleanField()
  def save(self, *args, **kwargs):
      if self.approved:
          for c in list(self.mod1s.all()):
              mod = mod1.objects.get(id=c.id)
              self.user.get_profile().mod1s.add(mod)
          self.delete()
      else:
          super(Mod1Request, self).save(*args, **kwargs)
  </code></pre>
  
  <p>And then the UserProfile has a 'mod1s' attribute that is a ManyToManyField to Mod1. What I'm trying to accomplish is this:
  When a Mod1Request is saved, if Approved is set then have the Mod1s listed in the Mod1Request added to UserProfile and then delete the Mod1Request itself.</p>
  
  <p>This functionality works right up until it goes to delete itself. If I remove the self.delete() line then the Mod1 instances in Mod1Request are correctly added to UserProfile.mod1s.  However, if I leave it in I get the following error:</p>
  
  <pre><code>'Mod1Request' instance needs to have a primary key value before a many-to-many relationship can be used.
  </code></pre>
  
  <p>Any help would be greatly appreciated.</p>
  
  <p><strong>EDIT:</strong> I should clarify that the Mod1Request gets entered by one user in a form and then approved by another (admin) user. So the admin user checks approved and 'saves' the Mod1Request. The Mod1Request should then add the Mod1s to the UserProfile and delete itself.</p>