jueves, junio 07, 2007

La interfaz admin de django

Una de las cosas por las que me encanta django, es por el interfaz que te crea automaticamente si quieres visualizar a través de web tu base de datos. Solo hace falta añadir una subclase Admin a las clases heredadas de los modelos.
Por ejemplo en mi caso:

class Photo(models.Model):
date_time_original = models.DateTimeField()
make = models.CharField(maxlength=50)
model = models.CharField(maxlength=50)
exposure_time = models.CharField(maxlength=50, null=True)
iso = models.CharField(maxlength=50, null=True)
f_number = models.CharField(maxlength=50, null=True)

class Admin:
pass

Esto ya me crea la infraestructura necesaria para visualizar, añadir y borrar registros en la base de datos a través de un interfaz web.

Pero hoy me he encontrado un problema, o simplemente viene de no haberme leido toda la documentación o de estar usando la versión de desarrollo.

No es es capaz de visualizarme en el interfaz de administración los campos de tipo FileField o CharField
este campo consigue darme error en el interfaz de administración
file = models.CharField(maxlength=100, null=True)

Continuaré investigando a ver como se soluciona el tema, pero claro, eso será otro rato libre que tenga.

Nota: También me voy a tener que mirar el blogger para que me respete las tabulaciones a la hora de mostrar trozos de código ya que en python es imprescindible

Actualización (8/06 20:00): Como era lógico el problema era mío, no de django, en el momento que empiece a ver las limitaciones del interfaz, será que ya se bastante, hasta entonces me imagino que continuaré pegandomela.

El problema en cuestión es que no se en que circustancias, no se me había actualizado la base de datos aunque había hecho un manage.py flush y syncdb.

Cuando he revisado la estructura de las tablas de la base de datos, he visto que no se me habían actualizado los cambios.

De momento, solución radical, después de cambiar la base de datos, la borro (es un fichero porqué he empezado en sqlite) y la vuelvo a crear.

Ahora funciona bien y ya tengo las 2 tablas casi rellenas, a falta de los tamaños de las fotos, y sacar los thumbnails del los ficheros CR2, solo me queda para una primera importación el mover los ficheros que puedo importar automáticamente a sus lugares de destino.

2 comentarios:

Anónimo dijo...

Hola, no sé si servirá de algo, pero si lo que quieres es que cuando modifiques algún modelo te haga los cambios oportunos en la base de datos tienes que utilizar el comando reset seguido del nombre de la aplicación donde se encuentren tus modelos a cambiar, es decir:

>manage.py reset nombre_aplicacion

Y claro, al hacer reset se borrarán todos los datos que tengas guardados en la base de datos.

Un saludo!

Dudu dijo...

Muchas gracias,

Desgraciadamente, tuve que abandonar este proyecto por falta de tiempo, ójala pudiera retomarlo.

Un saludo