Estoy intentando crear un sistema que permita al usuario cargar un archivo zip, y luego extraerlo usando la señal post_save.señales de django, cómo usar "instancia"
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
método funciona bien cuando se proporcionan rutas de archivos correctos (en este caso, tengo que proporcionar instance.file_zip.path
. Sin embargo, no pude obtener/establecer la instancia con las señales. Django documentación acerca de las señales no es clara .? y no tienen ejemplos Entonces, ¿qué hago
creo que se trata de la '** kwargs' la que no sé todavía. Tu ejemplo funciona bien, gracias. –
@Ferdinand No hay ejemplos sobre post_save en la documentación de django. – Anuj
@Anuj - Nunca dije que hubiera ejemplos sobre 'post_save'. Hay ejemplos sobre cómo usar señales en general, y estos también se aplican a 'post_save', ya que no hay nada de especial en esta señal en particular. –