0

Django-StoragesからS3BotoStorageをサブクラス化する新しいStorageクラスを実装しようとしています。(http://code.larlet.fr/django-storages/src/83fa2f0ba20c/storages/backends/s3boto.py)

新しいクラスの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(name、content)が呼び出され、すべてがS3にアップロードされます)。ただし、この新しいCustomStorage.saveメソッドがある場合、500エラーが発生します。(ただし、エラーメッセージがターミナルに表示されるため、呼び出されます)。コールスタックなどが表示されません。

私は試した:

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

これらのどちらも機能しませんでした。

何か案は?!

ありがとう!

4

1 に答える 1

1

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)
于 2012-05-15T14:47:36.993 に答える