2012-05-15 31 views
0

我試圖實現一個新的存儲類,它從Django-Storages的子類S3BotoStorage。 (http://code.larlet.fr/django-storages/src/83fa2f0ba20c/storages/backends/s3boto.py)從子類中調用S3BotoStorage的Save()方法

每當我的新類的保存方法被調用,我想做一些其他的東西然後調用S3BotoStorage._save()方法。就像這樣:

class CustomStorage(S3BotoStorage): 
    def __init__(self, *args, **kwargs): 
     super(CustomStorage, self).__init__(*args, **kwargs) 

    def _save(self,*args, **kwargs): 
     #Will do stuff there 
     print >> sys.stderr, "%s" % (self.bucket) 
     super(CustomStorage, self)._save(*args, **kwargs) 

如果我沒有這個CustomStorage._save()方法,一切正常(即S3BotoStorage._save(名稱,含量)被調用,一切都上傳到S3)。如果我有這個新的CustomStorage.save方法,但是,我得到一個500錯誤。 (它確實被調用,因爲我的錯誤消息出現在終端中)。我看不到任何調用堆棧或任何東西。

我想:

def save(self,*args, **kwargs): 
def save(self,name, content): 

這些都不還曾。

有什麼想法?

謝謝!

回答

0

Storage._save應返回正在保存的文件的名稱。您的_save沒有。您應該返回super呼叫的值。

class CustomStorage(S3BotoStorage): 
    def __init__(self, *args, **kwargs): 
     super(CustomStorage, self).__init__(*args, **kwargs) 

    def _save(self,*args, **kwargs): 
     #Will do stuff there 
     print >> sys.stderr, "%s" % (self.bucket) 
     return super(CustomStorage, self)._save(*args, **kwargs) 
+0

謝謝馬克!一如既往! – abisson