Elija el nombre de archivo de un archivo cargado con Django

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.