Foros del Web » Programando para Internet » Python »

Problema cargando Modelos en Django

Estas en el tema de Problema cargando Modelos en Django en el foro de Python en Foros del Web. Buenas noches, Soy principiante en Python/Django, y actualmente estoy desarrollando un proyecto usando una base de datos Postgresql, me ha parecido muy buen Lenguaje/Framework para ...
  #1 (permalink)  
Antiguo 11/06/2012, 20:33
Avatar de oswalgogra  
Fecha de Ingreso: septiembre-2007
Ubicación: En algún lugar del territorio Colombiano
Mensajes: 140
Antigüedad: 17 años, 2 meses
Puntos: 5
Pregunta Problema cargando Modelos en Django

Buenas noches,

Soy principiante en Python/Django, y actualmente estoy desarrollando un proyecto usando una base de datos Postgresql, me ha parecido muy buen Lenguaje/Framework para el desarrollo web.

Hoy decidí configurar Django para que se pueda conectar con bases de datos de MongoDB , instalé los componentes necesarios, pero todavía no he podido probar que funcione correctamente.

Luego de un rato quéría probar si con las configuraciones que estaba haciendo no se desestabilizaría la instalación inicial (sin las librerías de mongo-engine, etc.), pero desafortunadamente me encontré con el siguiente error al momento de cargar una lista de modelos de la base de datos:

Cita:
Caught AttributeError while rendering: 'AutoField' object has no attribute 'related_db_type'


El error hace referencia a la línea 10 de la siguiente plantilla:

Cita:
<script src="/static/js/jquery-1.7.2.min.js" ></script>
2 <script>
3 $(document).ready(function(){
4
5 });
6 </script>
7 <h3>Panel de usuario</h3>
8 <a href="/panel/comercios/">Comercios</a>
9 <hr />
10 {% if comercios %}
11 <ul>
12 {% for comercio in comercios %}
13 <li>{{ comercio.nombre }} <a href="/nueva-oferta/{{comercio.id}}">Oferta+</a></li>
14 {% if comercio.oferta_set.all %}
15 {% for oferta in comercio.oferta_set.all %}
16 {{oferta.titulo}} <strong>{{ oferta.precio_oferta }}</strong><br/>
17 {% endfor %}
18 {% endif %}
19 {% endfor %}
20 </ul>
El código que realiza la carga de la plantilla es el siguiente:

Código Python:
Ver original
  1. def cargar_panel(request):
  2.     usuario = User.objects.get(pk=request.user.id)
  3.     comercios = Comercio.objects.filter(usuario=usuario).order_by('-fecha_registro')[:5]
  4.     return render_to_string('usuarios/panel.html',{'username': usuario.username, 'comercios': comercios}, context_instance=RequestContext(request))

Y pienso que el error está al momento de cargar una colección de Comercios por medio de la relación con el modelo Usuario (Llave foránea), ya que al buscarla por un tipo de atributo que no sea llave foránea, se cargan sin problemas:
Código Python:
Ver original
  1. comercios = Comercio.objects.filter(usuario=usuario).order_by('-fecha_registro')[:5]

En la documentación de Django he visto que el atributo ID se crea automáticamente para todos los modelos, y es un atributo auto-incremental (llave primaria), o sea que no es necesario agregar la siguiente línea en el modelo User:
Código Python:
Ver original
  1. id = models.AutoField(primary_key=True)

Ya llevo mucho rato buscando la solución y no la he encontrado por ninguna parte...
A alguien ya le ha ocurrido???
Será que dañé la instalación de Django???

Agradezco cualquier ayuda
Hasta pronto!
__________________
Oswaldo: El que gobierna con el poder de Dios.
  #2 (permalink)  
Antiguo 12/06/2012, 08:32
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema cargando Modelos en Django

¿Has definido la clave foránea? Pon el código relevante de tus modelos.


saludos.
  #3 (permalink)  
Antiguo 12/06/2012, 08:41
Avatar de oswalgogra  
Fecha de Ingreso: septiembre-2007
Ubicación: En algún lugar del territorio Colombiano
Mensajes: 140
Antigüedad: 17 años, 2 meses
Puntos: 5
Información Respuesta: Problema cargando Modelos en Django

Hola,
El código del modelo Comcercio es el siguiente (Había estado funcionando bien):

Código Python:
Ver original
  1. class Comercio(models.Model):
  2.     nombre = models.CharField(max_length=100)
  3.     pais = models.ForeignKey(Pais)
  4.     departamento = models.ForeignKey(Departamento)
  5.     ciudad = models.ForeignKey(Ciudad)
  6.     activo = models.BooleanField()
  7.     nombre_representante = models.CharField(max_length=100)
  8.     fecha_registro = models.DateField(auto_now_add=True)
  9.     email = models.EmailField(max_length=100)
  10.     direccion = models.CharField(max_length=255)
  11.     telefono = models.CharField(max_length=50)
  12.     imagen = models.CharField(max_length='255', blank=True, default='', null=True)
  13.     descripcion = models.TextField()
  14.     coordenadas = models.CharField(max_length=50, default='', blank=True, null=True)
  15.     usuario = models.ForeignKey(User)
  16.  
  17.     def __str__(self):
  18.         return self.nombre +", "+ self.ciudad.nombre
__________________
Oswaldo: El que gobierna con el poder de Dios.
  #4 (permalink)  
Antiguo 12/06/2012, 08:48
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema cargando Modelos en Django

Según el tutorial, MongoDB no funciona vía claves foráneas y demases, y la forma de trabajar es bastante diferente. Creo que el problema radica en que no se puede trabajar con postgre de la misma forma que se trabaja con Mongo, y que tus modelos no servirán. Pero sin tener experiencia de primera mano (ni haber leído completamente la documentación) no lo puedo decir con seguridad.

Tutorial de Django MongoDB -> http://django-mongodb.org/tutorial.html


Saludos.

Última edición por AlvaroG; 12/06/2012 a las 08:53
  #5 (permalink)  
Antiguo 12/06/2012, 08:54
Avatar de oswalgogra  
Fecha de Ingreso: septiembre-2007
Ubicación: En algún lugar del territorio Colombiano
Mensajes: 140
Antigüedad: 17 años, 2 meses
Puntos: 5
Respuesta: Problema cargando Modelos en Django

Si,
La conexión con Postgresql está bien, ya que la aplicación carga listas de modelos desde la base de datos cuando se hacen búsquedas por atributos que no son llaves foráneas, pero el problema se sigue presentando cuando busco por dichas llaves (en mongo no se usan...).

Hoy probaré si la conexión con MongoDB se hace sin problemas. Pensé que la configuración de una no afectaría a la otra
__________________
Oswaldo: El que gobierna con el poder de Dios.
  #6 (permalink)  
Antiguo 12/06/2012, 09:08
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema cargando Modelos en Django

No debería afectarla, de hecho. Asumí que tu problema se da solamente en Mongo, no en PostgreSQL.

¿será que el conflicto es por el atributo ID modificado? ¿qué pasa si lo agregas de nuevo al modelo?
  #7 (permalink)  
Antiguo 12/06/2012, 09:26
Avatar de oswalgogra  
Fecha de Ingreso: septiembre-2007
Ubicación: En algún lugar del territorio Colombiano
Mensajes: 140
Antigüedad: 17 años, 2 meses
Puntos: 5
Respuesta: Problema cargando Modelos en Django

El modelo nunca tuvo el atributo ID (explícitamente), ya que Django crea por defecto un id para cada modelo.

Código Python:
Ver original
  1. id = models.AutoField(primary_key=True)

También probé poniéndolo explicitamente en el modelo, y ejecuté nuevamente syncdb, pero nada, se sigue presentando la excepción...

Mira, esta es una versión del aplicativo (sin la configuración de MongoDB):
Prototipo Nearwalk

Puedes probar iniciando sesión con el usuario: nike1, clave: 1234

Y selecciona la opción panel.
En ese listado es donde se presenta la excepción, ya que los comercios mostrados se cargan con base en el usuario que está logueado.
__________________
Oswaldo: El que gobierna con el poder de Dios.
  #8 (permalink)  
Antiguo 12/06/2012, 12:30
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema cargando Modelos en Django

Pues yo no veo ninguna excepción, y probé todos los enlaces
  #9 (permalink)  
Antiguo 12/06/2012, 21:52
Avatar de oswalgogra  
Fecha de Ingreso: septiembre-2007
Ubicación: En algún lugar del territorio Colombiano
Mensajes: 140
Antigüedad: 17 años, 2 meses
Puntos: 5
Respuesta: Problema cargando Modelos en Django

Tuve que desinstalar y volver a instalar django, menos mal es que cuestión de borrar una carpeta y ejecutar un comando :D

Debo seguir investigando por la forma de integrar django con mongodb.

Gracias!
__________________
Oswaldo: El que gobierna con el poder de Dios.

Etiquetas: django
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:02.