title: Django models - before save/create
body: <p>I have two Models:</p>
  
  <pre><code>class Category(MPTTModel):
      name = models.CharField(max_length=50,unique=True)
      parent = TreeForeignKey('self', null=True, blank=True, related_name='children')    
      def __unicode__(self):
          return self.name
  
  class Product(models.Model):
      name = models.CharField(max_length=50)
      categories = models.ManyToManyField(Category,related_name='products')    
      def __unicode__(self):
          return self.name
  </code></pre>
  
  <p>The categories follow a tree like structure and I want to add products only to 'leaf categories'.<br>
  When I call <code>my_category.products.create(...)</code> or similar and <code>my_category.is_leaf_node() == False</code> then it should fail.<br>
  The same for <code>my_category.children.create(...)</code> if my_category has products already then it should fail.<br>
  Those checks go in the save method? in a custom manager? or some where else? I would the verification to be at model level.</p>