2012-08-01 16 views
5

mam DateTimeField:Django DateTimeField porównać z DateTime.Now()

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

muszę porównać go do bieżącego czasu daty, próbowałem:

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

Ale zawsze wraca False Próbowałem również:

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

Ale mam ten sam problem.

Mam informacje w polu: 2011-07-02 00:00:00 na przykład w postaci generowanych przez ModelForm

+0

Kod, który wysłałeś, powinien działać. Czy możesz dodać trochę więcej szczegółów. Jeśli drukujesz/logujesz wartość 'self.official_deadline' w metodzie, jaka jest wartość? – Alasdair

+0

Zgadzam się z Alasdair - musisz sprawdzić wartości, które powraca porównanie. To jest, kiedy uwielbiam używać powłoki django. –

+0

Mam: 'datetime.datetime (2011, 7, 2, 5, 0, tzinfo = )' gdy pytam 'assignment.official_deadline'. I '>' kiedy pytam 'assignment.official_deadline_past' – nlassaux

Odpowiedz

0

miałem podobny problem w porównaniu DateTimeField z datetime pod Pythona 2.7.3 i 1.3.1 django

I don Myślę, że DateTimeField miał wtedy dobre wsparcie strefy czasowej lub nie skonfigurowałem go poprawnie.

Ilekroć określiłem strefę czasową dla pola datetime wszystkie moje porównania DateTimeField> datetime zakończyłyby się niepowodzeniem.

datetime korzystał z lokalnego czasu centralnego, podczas gdy DateTimeField został wprowadzony jako wschodni.

Skończyło się na tym, że po prostu wstawiłem głupiego hacka, aby dodać timedelta (godziny = 1) do centralnego obiektu daty i "przekonwertować" go na wschód.

Powiązane problemy