Tôi đang cố gắng triển khai kế thừa thừa kế ở Django bằng mã sau đây, nhưng nó tạo ra lỗi sâu đệ quy MAX. Tôi đang cố gắng ghi đè phương thức save
của mô hình.Thừa kế trừu tượng trong Mô hình Django, gây ra lỗi sâu đệ quy 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)
sản xuất lỗi này (kết thúc của các dấu vết, nó dài):
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
Bạn đã thử thay thế 'self .__ class__' bằng' BaseModel'? Bằng cách này, bạn không cần 'return' vì' save' không trả về bất cứ thứ gì. – Maccesch
oh yeah, cảm ơn bạn. :) – ultrajohn