[Django] Timezones und Datum aus Formular
Verfasst: Dienstag 5. November 2013, 17:25
Ich dachte ich fange mal an eine Anwendung so zu ändern, dass kein Datum mehr ohne Timezone verwendet wird, damit ich die doofen Einträge in den Logs los werden:
Die Anwendung hat einige Formulare, bei denen ein Datum gewählt werden kann um Daten aus der Datenbank zu selektieren (also von und bis):
Die entsprechenden Daten hole ich mir im view über cleaned data:
Da kommt dann aber ein datetime.date-Objekt heraus, und das scheint Django ebenfalls als "naive" anzusehen wenn ich die Daten verwende um damit auf der Datenbank zu selektieren. Die Dokumentation sagt:
Ich könnte jetzt natürlich das datetime.date-Objekt im View in ein datetime.datetime-objekt wandeln und dem eine Zeitzone verpassen - irgendwie habe ich aber das Gefühl etwas offensichtliches übersehen zu haben.
An sich kein Problem, meistens musste ich nur ein datetime.datetime.now() durch ein django.utils.timezone.now() ersetzen.DateTimeField received a naive datetime (2013-01-01 00:00:00) while time zone support is active.
Die Anwendung hat einige Formulare, bei denen ein Datum gewählt werden kann um Daten aus der Datenbank zu selektieren (also von und bis):
Code: Alles auswählen
class ListSelectionForm(forms.Form):
from_date = forms.DateField(label="Von", widget=DatePicker)
till_date = forms.DateField(label="Bis", widget=DatePicker)
Code: Alles auswählen
from_date = form.cleaned_data["from_date"]
till_date = form.cleaned_data["from_date"]
Das scheint bei forms.DateField nicht der Fall zu sein.When you enable time zone support, Django interprets datetimes entered in forms in the current time zone and returns aware datetime objects in cleaned_data.
Ich könnte jetzt natürlich das datetime.date-Objekt im View in ein datetime.datetime-objekt wandeln und dem eine Zeitzone verpassen - irgendwie habe ich aber das Gefühl etwas offensichtliches übersehen zu haben.