title: Abstract Inheritance in Django Model, causing MAX recursion depth error
body: <p>I'm trying to implement abstract inheritance in Django with the following code, but it produces a MAX recursion depth error. I'm trying to override a model's <code>save</code> method.</p>
  
  <pre><code>class BaseModel(models.Model):
      class Meta:
          abstract = True
  
      def save(self, *args, **kwargs):
          #i'm doing something here
  
          #i think the problem is in the return statement specifically because of the
          #self.__class__ expression.
          return super(self.__class__, self).save(*args, **kwargs)
  
  class MyModel(BaseModel):
      p = models.CharField(max_length=30)
  </code></pre>
  
  <p>produces this error (end of the trace, it's lengthy):</p>
  
  <pre><code>  File "/home/jultra/ap3w/jultra_01/mysite/testsite/models.py", line 10, in save
      return super(self.__class__, self).save(*args, **kwargs)
    File "/home/jultra/ap3w/jultra_01/mysite/testsite/models.py", line 10, in save
      return super(self.__class__, self).save(*args, **kwargs)
    File "/home/jultra/ap3w/jultra_01/mysite/testsite/models.py", line 10, in save
      return super(self.__class__, self).save(*args, **kwargs)
    File "/home/jultra/ap3w/jultra_01/mysite/testsite/models.py", line 10, in save
      return super(self.__class__, self).save(*args, **kwargs)
  RuntimeError: maximum recursion depth exceeded
  </code></pre>