lunes, 5 de diciembre de 2011

Shell en django

Ocurre muchas veces que necesitamos una shell en django para realizar pruebas o tareas de mantenimiento. Conseguirla es muy sencillo ya que settings.py se cargará desde el primer momento en que importemos un modelo o cualquier módulo de django.  Lo único que tenemos que hacer es exportar la variable DJANGO_SETTINGS_MODULE con el valor del fichero de settings que queremos utilizar. Yo uso este script (suponiendo que nuestros settings están en settings.py):

shell.sh
export DJANGO_SETTINGS_MODULE="settings"
python


desde aquí ya podemos operar con los modelos:

from gesion.models import Cliente
c=Cliente(clave='444', descripcion='Pepe Perez')
c.save()


Si queremos acceder desde un script independiente en python podemos usar setup_environ de esta forma:

mantenimiento.py
from django.core.management import setup_environ

try:
  import settings
except ImportError:
  import sys
  sys.stderr.write("No encuentro el fichero de settings")
  sys.exit(1)

setup_environ(settings)

....


Espero que os sirva.

2 comentarios:

Goinnn dijo...

¿Por qué es mejor eso que hacer un python manage.py shell?

Un saludo

Unknown dijo...

Hola

No es mejor, es otra forma. El segundo script te permite automatizar tareas de mantenimiento.

Un saludo.