title: Is save() called implicitly when calling create in django?
body: <p>I'm trying to perform some custom validation on a model and I'm getting confused. Let me be specific. Let's say my code is as follows:</p>
  
  <pre><code>class FooManager(models.Manager):
    def create_foo(self, name):
      return self.create(foo_name = name)
  
  class Foo(models.Model):
    foo_name = models.CharField(max_length=30)
    objects = FooManager()
  
    def clean(self):
      ...
    def save(self, *args, **kwargs):
      self.full_clean()
      super(User, self).save(*args, **kwargs)
  </code></pre>
  
  <p>Now, when I am working with this model from the shell, if I call:</p>
  
  <blockquote>
    <p>f = Foo.objects.create_foo("")</p>
  </blockquote>
  
  <p>It will raise a validation error before I get a chance to call save() on f. Why does this happen? Shouldn't the validation error only be raised once I call f.save()?</p>
  
  <p>Note: the same thing happens if I use objects.create() as opposed to the custom defined create method. Any help would be greatly appreciated, as I'm finding validations in django to be fairly frustrating.</p>