私はzipファイルをアップロードしてpost_save信号を使ってそれを抽出できるシステムを作成しようとしています。djangoシグナル、 "インスタンス"の使い方
class Project:
....
file_zip=FileField(upload_to='projects/%Y/%m/%d')
@receiver(post_save, sender=Project)
def unzip_and_process(sender, **kwargs):
#project_zip = FieldFile.open(file_zip, mode='rb')
file_path = sender.instance.file_zip.path
with zipfile.ZipFile(file_path, 'r') as project_zip:
project_zip.extractall(re.search('[^\s]+(?=\.zip)', file_path).group(0))
project_zip.close()
unzip_and_process
方法正しいファイルパスが提供されたときに正常に動作します(この場合、私はinstance.file_zip.path
を提供する必要があります。しかし、私が取得/シグナルでインスタンスを設定することができませんでした。信号に関するDjangoのドキュメントは明確ではありません。?。と何の例を持っていないので、私は
私がまだ知らない '** kwargs 'についてだと思います。あなたの例はうまくいく、ありがとう。 –
@Ferdinand djangoのドキュメントのpost_saveの例はありません。 – Anuj
@Anuj - 'post_save'についての例はありませんでした。シグナルの一般的な使い方の例がありますが、これは 'post_save'にも当てはまります。なぜなら、この特定のシグナルに特別なものはないからです。 –