Foros del Web » Programando para Internet » Python »

queryset con django

Estas en el tema de queryset con django en el foro de Python en Foros del Web. mmmmmmmmmmmmm ok ... pero ahora lo hise >>> from datetime import timedelta >>> from django.db.models import F >>> from aplicacion.models import Proyecto, Componente, Alerta >>> ...

  #31 (permalink)  
Antiguo 18/02/2011, 12:05
 
Fecha de Ingreso: enero-2011
Mensajes: 26
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: queryset con django

mmmmmmmmmmmmm ok ...
pero ahora lo hise >>> from datetime import timedelta
>>> from django.db.models import F
>>> from aplicacion.models import Proyecto, Componente, Alerta
>>> qs= Alerta.objects.filter(proyecto__nombre='Proyeto1', componente__nombre='guardar')
>>> alerta_list= qs.filter(fecha__gte=F('fecha') - timedelta(weeks=5))

y luego le di un print y me salio lo siguente ...

>>> print alerta_list
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/lib/python2.5/site-packages/django/db/models/query.py", line 68, in __repr__
data = list(self[:REPR_OUTPUT_SIZE + 1])
File "/usr/lib/python2.5/site-packages/django/db/models/query.py", line 83, in __len__
self._result_cache.extend(list(self._iter))
File "/usr/lib/python2.5/site-packages/django/db/models/query.py", line 269, in iterator
for row in compiler.results_iter():
File "/usr/lib/python2.5/site-packages/django/db/models/sql/compiler.py", line 672, in results_iter
for rows in self.execute_sql(MULTI):
File "/usr/lib/python2.5/site-packages/django/db/models/sql/compiler.py", line 727, in execute_sql
cursor.execute(sql, params)
File "/usr/lib/python2.5/site-packages/django/db/backends/util.py", line 15, in execute
return self.cursor.execute(sql, params)
File "/usr/lib/python2.5/site-packages/django/db/backends/sqlite3/base.py", line 200, in execute
return Database.Cursor.execute(self, query, params)
InterfaceError: Error binding parameter 2 - probably unsupported type.


disculpame si de pronto hago preguntas tontas pero como te dije soy nueva en django
  #32 (permalink)  
Antiguo 18/02/2011, 12:13
 
Fecha de Ingreso: enero-2011
Mensajes: 26
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: queryset con django

hey ya lo hise como me acabas de decir pero al mandar a visualiza alerta _list mira
>>> print alerta_list
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/lib/python2.5/site-packages/django/db/models/query.py", line 68, in __repr__
data = list(self[:REPR_OUTPUT_SIZE + 1])
File "/usr/lib/python2.5/site-packages/django/db/models/query.py", line 83, in __len__
self._result_cache.extend(list(self._iter))
File "/usr/lib/python2.5/site-packages/django/db/models/query.py", line 269, in iterator
for row in compiler.results_iter():
File "/usr/lib/python2.5/site-packages/django/db/models/sql/compiler.py", line 672, in results_iter
for rows in self.execute_sql(MULTI):
File "/usr/lib/python2.5/site-packages/django/db/models/sql/compiler.py", line 727, in execute_sql
cursor.execute(sql, params)
File "/usr/lib/python2.5/site-packages/django/db/backends/util.py", line 15, in execute
return self.cursor.execute(sql, params)
File "/usr/lib/python2.5/site-packages/django/db/backends/sqlite3/base.py", line 200, in execute
return Database.Cursor.execute(self, query, params)
InterfaceError: Error binding parameter 2 - probably unsupported type.

disculpa si hago preguntas tontas o si pregunto tanto pero es que soy nueva y me pierdo un poco !!!!
  #33 (permalink)  
Antiguo 18/02/2011, 15:23
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: queryset con django

filter() lleva 1 solo parámetro. Le has puesto dos, allí está el problema
Cambia
Código Python:
Ver original
  1. Alerta.objects.filter(proyecto__nombre='Proyeto1', componente__nombre='guardar')
  2. alerta_list= qs.filter(fecha__gte=F('fecha') - timedelta(weeks=5))
Por
Código Python:
Ver original
  1. alerta_list = Alerta.objects.filter(
  2.     proyecto__nombre='Proyeto1'
  3. ).filter(
  4.     componente__nombre='guardar'
  5. ).filter(
  6.     fecha__gte=F('fecha') - timedelta(weeks=5)
  7. )
filter() devuelve un QuerySet, por lo que las llamadas a la función pueden encadenarse.
Manual: http://docs.djangoproject.com/en/dev...aining-filters

Saludos.
  #34 (permalink)  
Antiguo 20/02/2011, 09:53
 
Fecha de Ingreso: agosto-2008
Mensajes: 198
Antigüedad: 16 años, 3 meses
Puntos: 27
Respuesta: queryset con django

En django el filter si puede llevar 2 o más condiciones separadas por un coma y serán tomadas como una AND, no es necesario ir encadenando cada filter.Ese no es el problema, el problema esta en esta línea:

alerta_list= qs.filter(fecha__gte=F('fecha') - timedelta(weeks=5))

La verdad es que nunca he usado ese filtro pero en la documentación referente a esa opción de filtro dice:
-------------------------------------------------------------------------------------------------------
New in Django Development version.

For date and date/time fields, you can add or subtract a datetime.timedelta object. The following would return all entries that were modified more than 3 days after they were published:
Entry.objects.filter(mod_date__gt=F('pub_date') + timedelta(days=3))
-------------------------------------------------------------------------------------------------------
Quizás la versión de Django que tienes instalada aún no soporta esto.

Saludos.
  #35 (permalink)  
Antiguo 28/02/2011, 13:15
 
Fecha de Ingreso: enero-2011
Mensajes: 26
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: queryset con django

hola que tal si en realidad era por mi version de django ... gracias igual aun no e podido realizar mi cometido !!!! se acepta alguna otra sugerencias

lo que hago lo hace bien no me muestra ningun error pero no hace lo que debe !!!

gracias
  #36 (permalink)  
Antiguo 22/03/2011, 06:34
 
Fecha de Ingreso: enero-2011
Mensajes: 26
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: queryset con django

hola que tal aun sigo intentando relizar mis consultas de las alertas de componentes por ano mes y dia se aceptan sujerencias pues aun no lo he logrado gracias

Yo le veo dos opciones,

una seria pasarle al template el mes en otra variable y despues
comprar con el contenido de esa variable.

otra seria filtrar en la vista los elementos y pasarle al template
solo los elementos que queres mostrar.

La cosa es que e probado las dos y no me resultan !!! probablemente lo hago mal espero su ayuda gracias

Saludos

Última edición por ichibi; 22/03/2011 a las 07:30

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 18:23.