Algo interesante que nos aporta django-command-extensions es poder crear una representación gráfica de nuestros modelos (o por decirlo de otro modo nuestro esquema de base de datos) con tan sólo un comando. Esto es posible gracias a GraphViz y el resultado es algo parecido a un diseño UML. Para poder utilizar este comando debemos tener instalado pygraphviz y por supuesto la aplicación django_extensions debe estar incluída en el setting INSTALLED_APPS de nuestro proyecto.
Para instalar pygraphviz en Linux nos bastará con utilizar el comando:
apt-get install python-pygraphviz
Una vez hemos instalado django-command-extensions y pygraphviz podremos crear un archivo dot, formato utilizado por GraphViz ó una imagen. En nuestro caso vamos a crear un archivo PNG que incluya los modelos de todas las aplicaciones de nuestro proyecto. Para ello usamos el comando:
./manage.py graph_models -a -g -o mis_modelos.png
Con el parámetro -o especificamos el archivo de imagen en el que queremos que se almacene el resultado. Si sólo queremos incluir los modelos de algunas aplicaciones podemos hacerlo con el siguiente comando:
./manage.py graph_models app1 app2 app3 -o mis_modelos.png
Este ejemplo es de los modelos de la PyCon-Tech, un framework de gestión de conferencias basado en Django:

Publicado por Antonio Melé el Domingo 12 de Julio de 2009 | 0 comentarios | Categorías: aplicaciones, imágenes, modelos, pluggables, trucos, tutorial
django-thumbs ya tiene nuevo sitio web: http://djangothumbnails.com. La versión 0.3 de django-thumbs funciona correctamente con la versión de desarrollo de Django actual y soluciona algunos problemas de las versiones anteriores. django-thumbs permite crear miniaturas de imágenes para los campos ImageField de tus modelos.
Para usar django-thumbs en tus modelos importa ImageWithThumbsField y reemplaza los campos ImageField por campos ImageWithThumbsField. En cada campo de imagen podrás incluir un nuevo argumento sizes que defina los tamaños de imagen de las miniaturas que deseas. Por ejemplo:
from django.db import models
from thumbs import ImageWithThumbsField
class Persona(models.Model):
foto = ImageWithThumbsField(upload_to='images', sizes=((125,125),(200,200)))
otra_foto = ImageWithThumbsField(upload_to='images')
Al subir una imagen se crearán las miniaturas definidas mediante el atributo sizes y al eliminar el objeto se eliminarán las miniaturas asociadas. Por lo demás ImageWithThumbsField funciona igual que un ImageField normal y no introduce ningún cambio en las tablas de la base de datos de tu modelo. Siempre puedes volver a utilizar ImageField en lugar de ImageWithThumbsField cuando quieras.
Para obtener la url de las miniaturas en las plantillas basta con acceder al atributo url_tamaño. En nuestro caso sería imagen.url_125x125 e imagen.url_200x200.
Publicado por Antonio Melé el Domingo 22 de Marzo de 2009 | 4 comentarios | Categorías: aplicaciones, comunidad, imágenes
Al instalar Django en Mac OS X, si utilizamos ImageField en nuestros modelos necesitaremos PIL (Python Imaging Library), la librería de tratamiento de imágenes para Python. Tras probar con distintos métodos que no han tenido éxito he encontrado un post que explica de una forma sencilla cómo hacerlo. Estos son los pasos a seguir:
Descarga el instalador de PIL desde http://pythonmac.org/packages/py25-fat/index.html
El instalador de PIL busca Python en una ruta distinta de donde está por defecto en Mac OS X Leopard. Para que al buscar en esa ruta encuentre la verdadera ruta donde se encuentra Python tenemos que crear un enlace simbólico:
cd /Library/Frameworks sudo ln -s /System/Library/Frameworks/Python.framework/ Python.framework
Abrimos el instalador que hemos descargado e instalamos PIL
Tenemos que añadir PIL a nuestro path de Python. Editamos ~/.profile (en caso de no funcionar de esta manera editaríamos ~/.bashrc) y añadimos la siguiente línea:
export PYTHONPATH=/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/
Podemos comprobar que PIL está correctamente instalado escribiendo el siguiente comando en el Terminal y viendo que no da ningún error:
python -c "from PIL import Image"
Publicado por Antonio Melé el Sábado 7 de Marzo de 2009 | 1 comentario | Categorías: imágenes, instalación, mac osx
Tras ver que la mayoría de los proyectos existentes para generar miniaturas de imágenes aún no funcionan con la API de Storage y que algunos resultan algo complejos para lo que yo quería me puse a desarrollar un campo que lo hiciera del modo más sencillo posible.
La idea original era generar un campo que:
Y lo que surgió fue django-thumbs. En la página del proyecto tenéis toda la información necesaria para ponerlo a funcionar. Si buscáis algo más complejo y con más opciones tenéis sorl-thumbnail, aunque aún no soporta backends de almacenamiento.
Publicado por Antonio Melé el Martes 23 de Diciembre de 2008 | 3 comentarios | Categorías: imágenes, modelos, snippets
Suscríbete a nuestro feed RSS y al feed de la comunidad para estar al tanto de todo lo que ocurre entorno a Django.
Tú también puedes escribir en éste blog. Para hacerlo basta con que nos digas sobre qué quieres escribir un artículo relacionado con Django.
Utilizar un formulario para modificar 2 modelos
Descubriendo objetos similares por sus etiquetas