StdImageField para Django May 17, 2008
Posted by Bosco in : django/python, programación , trackbackMarc García ha liberado hoy un nuevo pluggin para Django, StdImageField, que mejora el ImageField estandar. Las ventajas de usar este StdImageField son entre otras:
- Te almacena las imágenes con un nombre más manejable. Te permite definir el directorio donde lo quieres almacenar, y el nombre será “nombre_del_campo” + “_” + “id” + “.jpeg”
- Te crea automáticamente (si quieres) un thumbnail de la imagen.
- Cambia el tamaño de la imagen a un tamaño predefinido.
- Los archivos de las imágenes se pueden borrar desde el formulario, facilitando una mejor administración del espacio de disco.
El plugin este se incluye muy fácilmente, simplemente se añade en la raiz del proyecto y no hace falta incluirlo en el INSTALLED_APPS. Simplemente importa la definición donde lo necesites.
Como es altamente probable que utilice este plugin en mi proyecto, lo he probado y he hecho el siguiente cambio.
En el fichero widgets.py, línea 19, cambiaría:
output.append(item % (_('Currently:'), '<a target="_blank"
href="%s%s">%s</a>' %
(settings.MEDIA_URL, value, value)))
por:
output.append(item % (_('Currently:'), '<a target="_blank"
href="%s%s"><img alt="%s" src="%s%s"/></a>' %
(settings.MEDIA_URL, value, value, settings.MEDIA_URL,
value.replace('jpeg','thumbnail.jpeg'))))
De esta forma en vez de mostrarte la ruta de la imagen que quieres editar, lo que te muestra es el thumbnail de la imagen. Y si no hay thumbnail porque tienes millones de imágenes y quieres ahorrar espacio de disco? Pues a lo mejor habría que generarlo on-the-fly… Por ahora no me preocuparé por eso.

Comments»
hola,
parece interesante, senzillo lo del resize, pero tiene dos “dependencias”:
- Newforms-admin
- PIL (lógico, esto tb lo tiene el original ImageField).
Por otro lado tiene un pequeño bug, que cuando intentas borrar un fichero te deja el thumbnail en el disco duro. Para evitarlo se me ha ocurrido sobreescribir el delete_file method the FileField.
He puesto una issue en el IssueTracker de stdimage:
http://code.google.com/p/django-stdimage/issues/detail?id=8
También cuando intentas subir un fichero de tipo gif, peta … imagino que esta es una limitación de PIL o de django, pero se podría tratar facilmente,