title: Django admin.py: save_model() is not called by model.save() in save method of ModelForm
body: <p>My blog post model has a many-to-many field for tags:</p>
  
  <pre><code>tags = models.ManyToManyField(PostTag)
  </code></pre>
  
  <p>But it was uncomfortable to edit it and I modified my model like this:</p>
  
  <pre><code>def _get_tagging(self): # Returns comma separated list of tags
      tagging = []
      for tag in self.tags.all():
          tagging.append(tag.name)
      return ", ".join(tagging)
  
  def _set_tagging (self, tagging): # Saves tags from comma separated list
      tagging = tagging.split(", ")
      self.tags.clear()
      for tag in tagging:
          if len(tag) &lt; 1:
              continue
          try:
              self.tags.add(PostTag.objects.get(name=tag))
          except ObjectDoesNotExist:
              self.tags.create(name=tag)
  
  tagging = property(_get_tagging, _set_tagging)
  </code></pre>
  
  <p>Then I modified my <code>admin.py</code>:</p>
  
  <pre><code>class BlogAdminForm (forms.ModelForm):
      tagging = forms.CharField(required=False, label="Tags", max_length=200,
                          widget=forms.TextInput(attrs={'class':'vTextField'}))
  
      class Meta:
          model = BlogPost
  
      def __init__(self, *args, **kwargs):
          super(BlogAdminForm, self).__init__(*args, **kwargs)
  
          if kwargs.has_key('instance'):
              instance = kwargs['instance']
              self.initial['tagging'] = instance.tagging
  
      def save(self, commit=True):
          model = super(BlogAdminForm, self).save(commit=False)
          model.tagging = self.cleaned_data["tagging"]
  
          if commit:
              model.save()
  
          return model
  </code></pre>
  
  <p>And this worked fine, but only for editing objects. I got an error when I tried to create a new object. Why? Because a many-to-many relationship can be used with an object that is not yet in the database and doesn't have a primary key ('BlogPost' instance needs to have a primary key value before a many-to-many relationship can be used). I tried to solve it by editing the save method in this way:</p>
  
  <pre><code>def save(self, commit=True):
      model = super(BlogAdminForm, self).save(commit=False)
      try:
          model.tagging = self.cleaned_data["tagging"]
      except ValueError:
          model.save()
          model.tagging = self.cleaned_data["tagging"]
  
      if commit:
          model.save()
  </code></pre>
  
  <p>This resolved the original problem. But now <code>model.save()</code> doesn't call the <code>save_model</code> method of my admin model:</p>
  
  <pre><code>class BlogAdmin (admin.ModelAdmin):
      # ... 
      form = BlogAdminForm
  
      def save_model(self, request, obj, form, change):
          obj.author = request.user
          obj.save()
  </code></pre>
  
  <p>In consequence of this I get a new error: <code>null value in column "author_id" violates not-null constraint.</code> What am I doing wrong? Can I call this method manually?</p>