2016-03-21 10 views
0

Ich habe gelesen, obwohl eine Menge Dokumentation und andere SO Fragen in Bezug auf die richtige und falsche Methoden der Änderung der Zeitzone auf einem Datetime-Objekt. Ich bin mir bewusst, dass die richtige Verwendung pytz ist und .localize und/oder .astimezone verwendet und nicht .replace verwendet.Manuelles Einstellen der Zeitzone in Django Formular

Ich versuche herauszufinden, wie der Benutzer die Zeitzone in das Formular eingeben kann. Ich möchte keine lokalisierten Browsereinstellungen verwenden, um die Zeitzone des Benutzers zu bestimmen. Der Benutzer sollte angeben können, welche Zeitzone auf das Datetime-Objekt angewendet wird, bevor es in der Datenbank gespeichert wird. Ich habe bereits ein TimeZoneField von django-timezone-field auf das Modell gesetzt, aber ich kann nicht herausfinden, wie man es richtig auf das Datetime-Objekt anwendet.

Alles, was ich versucht habe, konvertiert tatsächlich die Zeit. Ist das etwas, was ich in Javascript in der Vorlage statt in Python tun muss?

Antwort

1

Machen Sie die Datumsangabe naiv, indem Sie .replace(tzinfo=None) verwenden. (ref)

Dann wenden Sie die Zeitzone aus dem Zeitzone Feld mit tz.localize. (ref)

+0

Mit dieser Methode durch Überschreiben der Form_valid-Funktion in der Ansicht scheint zu funktionieren, aber es fühlt sich auch sehr hack-y. Ich habe das Gefühl, dass es einen Weg geben sollte, das Formular zu einem naiven Date-Time-Objekt zu bringen. Danke für die Antwort. Es bringt mich zumindest jetzt, wenn ich keinen saubereren Weg finde, dies zu erreichen. – mattsl

Verwandte Themen