Estoy tratando de implementar la herencia abstracta en Django con el siguiente código, pero produce un error de profundidad de recursión MAX. Estoy intentando anular el método save
de un modelo.Herencia abstracta en el modelo de Django, que causa el error de profundidad de recursión MAX
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)
produce este error (al final de la traza, que es muy largo):
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
¿Has intentado reemplazar 'self .__ class__' por' BaseModel'? Por cierto, no necesitas el 'return' porque' save' no devuelve nada. – Maccesch
oh sí, gracias. :) – ultrajohn