2016-08-02 28 views
2

So mache ich eine App, wo Sie Aktivitäten finden können, die an Orten passieren.Django admin: Zeitzone Anzeige

Auf der Django-Admin-Seite möchte ich in der Lage sein, Aktivitäten zu ändern (was funktioniert).

Eine Aktivität hat jedoch eine Startzeit - ich möchte, dass diese Startzeit in derselben Zeitzone liegt wie der Standort.

Also ich will es die Startzeit, auf der Aktivitäts-Admin-Seite, in der gleichen Zeitzone wie der Ort ist in, aber dann beim Speichern sollte es in UTC-Zeit konvertiert werden.

Die Startzeit ist in einem Inline-Formset, da sie mehrere Startzeiten haben kann.

Ich finde eine Möglichkeit, die Datetime beim Speichern der Objekte zu ändern, aber ich finde keine Möglichkeit, es zu ändern, wenn es in der Inline-Sache gerendert wird.

Wie ändere ich Daten, wie sie auf der Admin-Seite gerendert werden?

Antwort

5

So will ich es die Startzeit angezeigt werden, auf der Aktivität Admin-Seite, in der gleichen Zeitzone wie die Lage in ist, aber dann, wenn gespeichert soll es in UTC-Zeit umgewandelt werden.

Laut Dokumentation Django auf Zeitzone bewusst Eingang in Formen (https://docs.djangoproject.com/en/1.10/topics/i18n/timezones/#time-zone-aware-input-in-forms):

Wenn Sie Zeitzonen-Unterstützung zu aktivieren, eingegeben Datetimes Django interpretiert in Formen in der aktuellen Zeitzone und gibt bekannt, Datetime-Objekte in cleaned_data.

Was von dem, was ich verstanden habe, ist was du willst. Dies führt uns zu Standardzeitzone und aktuelle Zeitzone (https://docs.djangoproject.com/en/1.10/topics/i18n/timezones/#default-current-time-zone), in dem es heißt:

Die aktuelle Zeitzone ist die Zeitzone, die für die Darstellung verwendet wird.

Sie sollten die aktuelle Zeitzone auf die tatsächliche Zeit des Endbenutzers setzen Zone mit aktivieren(). Andernfalls wird die Standardzeitzone verwendet.

So verwenden activate() (https://docs.djangoproject.com/en/1.10/ref/utils/#django.utils.timezone.activate) Zeitzone Argument zu setzen und Sie sind gut zu gehen.

+0

i() in meinem init in meiner admin.StackedInline-Klasse timezone.activate endete. Dies funktioniert wie ein Freakin Charme. Vielen Dank. Niemals daran gedacht, so etwas zu tun! danke – CDK