Ten problem występował i wyłącza się już od kilku tygodni i różni się od innych, które pojawiły się w moim projekcie.Django default = timezone.now() zapisuje rekordy przy użyciu "starego" czasu.
Dwa używane modele mają znacznik czasu, który jest domyślnie ustawiony na timezone.now()
.
Jest to sekwencja, która podnosi flagi błędów: jeden
model jest tworzony w czasie 19:30
model jest tworzony w dwóch czas 10:00 PM, ale w bazie danych MySQL jest ona przechowywana jako godzina 19:30!
Każdy model, który jest tworzony ma swój znacznik czasu zapisaną pod 7:30 PM, a nie rzeczywisty czas, dopóki pewna czas mija. Następnie nowy czas jest ustawiony i wszystkie poniższe modele mieć ten nowy czas ... Bizzare
jakieś dodatkowe szczegóły, które mogą pomóc w odkrywaniu problem:
Mam kilka metod, które ja użyj do usunięcia stref czasowych z ich tzinfo
i zastąp je UTC.
To dlatego, że wykonuję obliczenia timezone.now() - creationTime
, aby utworzyć: "model został opublikowany to dawno temu" w projekcie . Jednak to naprawdę nie powinno być przyczyną problemu.
Nie sądzę, że użycie datetime.datetime.now()
będzie miało również znaczenie.
W każdym razie, dziękuję za pomoc!
Założę się, że problem "został naprawiony" dla pierwszego rekordu * po * wznowieniu procesu serwera (i być może tylko/wszystkie nowe rekordy wstawiono w tej samej minucie restart serwera). Pokaż kod, który używa/ustawia/ustanawia tę domyślną wartość. Podejrzewam, że jest on oceniany * raz * (gdy tworzony jest pierwszy rekord) i nie jest aktualizowany dla kolejnych rekordów. –
Twoje prognozy są poprawne! Co sprawia, że tak myślisz i dlaczego tak się dzieje? –