मैं निम्नलिखित कोड के साथ Django में अमूर्त विरासत को लागू करने की कोशिश कर रहा हूं, लेकिन यह MAX रिकर्सन गहराई त्रुटि उत्पन्न करता है। मैं एक मॉडल की save
विधि को ओवरराइड करने का प्रयास कर रहा हूं।Django मॉडल में सार विरासत, जिसके कारण 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)
इस त्रुटि पैदा करता है (ट्रेस के अंत में, यह लंबा है):
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
क्या आपने 'बेसमोडेल' द्वारा 'self .__ class__' को बदलने की कोशिश की है? वैसे, आपको 'वापसी' की आवश्यकता नहीं है क्योंकि 'save' कुछ भी वापस नहीं करता है। – Maccesch
ओह हाँ, धन्यवाद। :) – ultrajohn