Próbuję stworzyć system, który umożliwia użytkownikowi załadowanie pliku zip, a następnie wyodrębnić go za pomocą sygnału post_save.sygnały django, jak używać "instancji"
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
metoda działa dobrze, gdy są poprawne ścieżki plików (w tym przypadku muszę dostarczyć instance.file_zip.path
. Jednak nie mogłem/set wystąpienie z sygnałami. Django dokumentację o sygnałach nie jest jasne .? i nie ma przykładów Więc co mam zrobić
Myślę, że chodzi o '** kwargs', którego jeszcze nie znam. Twój przykład działa dobrze, dziękuję. –
@Ferdinand Nie ma przykładów na temat post_save w dokumentacji django. – Anuj
@Anuj - Nigdy nie powiedziałem, że były jakieś przykłady dotyczące 'post_save'. Istnieją przykłady użycia sygnałów w ogóle, a te odnoszą się również do 'post_save', ponieważ nie ma nic szczególnego w tym konkretnym sygnale. –