2012-08-01 21 views
5

Tengo una DateTimeField:Django DateTimeField comparar con datetime.now()

class Assignment (models.Model): 
    official_deadline = models.DateTimeField(null=True, blank=True) 

tengo que compararlo con fecha y hora actuales, que han intentado:

def official_deadline_past(self): 
    if datetime.datetime.today() > self.official_deadline: 
     return True 
    return False 

pero vuelve siempre False también he intentado:

def official_deadline_past(self): 
    if datetime.datetime.now() > self.official_deadline: 
     return True 
    return False 

pero tengo el mismo problema.

tengo una información en el campo: 2011-07-02 00:00:00 por ejemplo en la forma generada por ModelForm

+0

El código que ha publicado debería funcionar. Podría agregar un poco más de detalle. Si imprime/registra el valor de 'self.official_deadline' en el método, ¿cuál es el valor? – Alasdair

+0

Estoy de acuerdo con Alasdair: debe verificar los valores que devuelve la comparación. Esto es cuando me encanta usar el shell django. –

+0

Tengo: 'datetime.datetime (2011, 7, 2, 5, 0, tzinfo = )' cuando pregunto 'assignment.official_deadline'. Y '>' cuando pregunto 'assignment.official_deadline_past' – nlassaux

Respuesta

0

que tenía un problema similar comparando DateTimeField con fecha y hora bajo pitón 2.7.3 y 1.3.1 Django

I don No creo que DateTimeField tuviera un buen soporte de zona horaria o no lo configuré correctamente.

Cada vez que especificaba una zona horaria para el campo de fecha y hora todas mis comparaciones de DateTimeField> datetime fallarían.

datetime utilizaba la hora central local mientras DateTimeField se ingresaba como oriental.

Acabo de poner un truco estúpido para agregar un timedelta (hours = 1) al objeto central datetime para "convertirlo" al este.

Cuestiones relacionadas