2012-05-15 4 views
0

S3BotoStorage를 Django-Storages에서 하위 클래스로 만드는 새로운 Storage 클래스를 구현하려고합니다. (http://code.larlet.fr/django-storages/src/83fa2f0ba20c/storages/backends/s3boto.py)하위 클래스에서 S3BotoStorage Save() 메서드 호출

내 새 클래스의 save 메서드가 호출 될 때마다 다른 것들을하고 싶습니다. S3BotoStorage._save() 메서드를 호출하십시오. 이처럼 :이 CustomStorage._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) 

, 다 (즉,이 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