Estoy cargando imágenes (representadas por un FileField) y necesito cambiar el nombre de esos archivos cuando se cargan.
Quiero que se formen así:
"%d-%d-%s.%s" % (width, height, md5hash, original_extension)
He leído la documentación pero no sé si necesito escribir mi propia clase FileSystemStorage o mi propia clase FileField o …? Todo está tan vinculado que no sé por dónde empezar.
No es necesario que escriba su propia clase de FileStorage o cualquier cosa tan complicada.
El parámetro ‘upload_to’ en File / ImageFields puede tomar una función que devuelve la ruta / archivo a usar.
Cómo hacerlo ya se ha respondido aquí.
Mi instinto inicial al leer esto fue que necesita sobrecargar el método de guardado en el modelo, y usar el método os.rename (), pero eso causa una gran sobrecarga, y generalmente es una molestia de principio a fin. Si simplemente desea cambiar el nombre del archivo, pero no desea realizar cambios físicos (cambio de tamaño, duplicación, etc.), definitivamente recomendaría el método que Arcanum sugiere más arriba.