Aşağıdaki kodla Django'da soyut kalıtım uygulamaya çalışıyorum ancak bir MAX yineleme derinliği hatası üretiyor. Bir modelin save
yöntemini geçersiz kılmaya çalışıyorum.Django Modelinde Soyut Kalıtım Model, MAX yineleme derinliği hatasına neden oluyor
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)
bu hatayı üretir (iz sonunu, bu uzun olduğunu):
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
'BaseModel' tarafından' self .__ class__' değiştirmeyi denediniz mi? Bu arada, "geri dönüş" e ihtiyacınız yok çünkü "kaydet" hiçbir şey döndürmez. – Maccesch
oh evet, teşekkürler. :) – ultrajohn