Foros del Web » Programando para Internet » Python »

Problema con filtro en campo time con query Django

Estas en el tema de Problema con filtro en campo time con query Django en el foro de Python en Foros del Web. Hola a todos nuevamente, me he decidido a usar Django hace una semana, y llevo trabajando en un proyecto con el mismo, me gusta mucho ...
  #1 (permalink)  
Antiguo 19/08/2013, 09:55
Avatar de kivpson  
Fecha de Ingreso: marzo-2011
Mensajes: 37
Antigüedad: 13 años, 8 meses
Puntos: 7
Problema con filtro en campo time con query Django

Hola a todos nuevamente, me he decidido a usar Django hace una semana, y llevo trabajando en un proyecto con el mismo, me gusta mucho de este framework pero me he estancado en lo de los queries, tengo este problema:

Tengo una tabla con varios registros, entre ellos dos campos en especial, llamados:

inicio (time) "Especifica una hora inicial"
final (time) "Especifica una hora final"

Lo cual se usa para determinar que registro se usa a determinada hora, por ello realizo este query

Código:
TIME_FORMAT = "%H:%M:%S"
TIME_NOW = datetime.datetime.now().strftime(TIME_FORMAT)

try:
    row = mi_modelo.objects.get(inicio__lte=TIME_NOW, final__gte=TIME_NOW)
    # Se asignan datos de registro...
except ObjectDoesNotExist:
    # Se asignan datos por defecto...
Por ahora tengo un solo registro:
id | val | inicio | final
----------------------------------------
1 | 0.35 | 00:00:00 | 23:59:00
----------------------------------------

Pero no me da ningún resultado si estoy en la noche, o es impredecible...

No imagino que suceda cuando tenga los registros que se usaran:

id | val | inicio | final
----------------------------------------
1 | 0.50 | 22:00:00 | 00:00:00
----------------------------------------
2 | 0.50 | 00:00:00 | 12:00:00
----------------------------------------
3 | 0.35 | 12:00:00 | 22:00:00
----------------------------------------

Que estoy haciendo mal?

Les agradezco de antemano por su tiempo y ayuda.
  #2 (permalink)  
Antiguo 19/08/2013, 10:57
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Problema con filtro en campo time con query Django

Tu rango no esta completo:

Así estaría completo:
00:00:00 - 23:59:59

No se que fileds uses como inicio y fin, probablemente eso afecte. Especialmente si usas datetime.

Otra cosa tu lógica (query) tampoco funcionaría en el rango 22:00:00 - 00:00:00 ya que asumes inicio < final.

Código:
1 | 0.50 | 22:00:00 | 23:59:59
----------------------------------------
2 | 0.50 | 00:00:00 | 11:59:59
----------------------------------------
3 | 0.35 | 12:00:00 | 21:59:59
Tienes suerte que no te toco un rango como 22:00:00 - 06:00:00 ya que te tocaría refinar mas la lógica.

Si nos dieras con que datos te podríamos ayudar mejor.
  #3 (permalink)  
Antiguo 22/08/2013, 10:41
Avatar de kivpson  
Fecha de Ingreso: marzo-2011
Mensajes: 37
Antigüedad: 13 años, 8 meses
Puntos: 7
Respuesta: Problema con filtro en campo time con query Django

Gracias Razpeitia por responder, los campos son del tipo Time:

Código:
inicio  = models.TimeField()
final   = models.TimeField()
Tienes razón habría que fijar un rango de 22:00:00 a 23:59:59 para que funcione según la lógica que puse, otra de las cosas que pude ver es que Django usa un parámetro USE_TZ en su configuración, lo he desactivado porque me daba la fecha actual de forma errónea (o no supe configurarlo bien que es lo mas probable) y eso influía en las comparaciones y datos guardados en otras tablas.

Sin embargo aunque la hora actual tomada no haya sido la correcta, el rango en teoría era aplicable, pero no me daba resultados... Es lo que no entiendo...

Etiquetas: django, query, time
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 20:23.