Die übergabe Datum Uhrzeit in ein anderes format um Modelle.DateTimeField in Django?
Ich habe ein Modell, dass so aussieht
class Post(models.Model):
id = models.IntegerField(unique=True, primary_key=True)
title = models.CharField(max_length=150, blank=True)
created = models.DateTimeField(blank=True)
...
Habe ich zum füllen der Datenbank mit Brocken von Daten. Ich bekomme die Daten in form einer flachen json-string (keine Verschachtelung), so, meine Arbeit ist ziemlich einfach, D. H.
mydict = json.loads(jsonstr)
mypost = Post(**mydict)
mypost.save()
es gibt nur ein Problem, dass das Datum-die Zeit, ausgedrückt in "YYYY-MM-DDThh:mm:ss+zzzz" - format ( z.B. "created" : "2011-11-17T09:21:31+0000"
), bricht der obige code.
Ich weiß forms.DateTimeField
hat input_formats
. Gibt es eine Möglichkeit, die ich machen konnte DateTimeField akzeptieren oben genannte format?
InformationsquelleAutor Optimus | 2011-11-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unterklasse DateTimeField und konvertieren Sie den Wert entsprechend:
Dann verwenden ConvertingDateTimeField zu ersetzen-Modelle.DateTimeField.
Wahrscheinlich gibt es einen besseren Weg, es zu tun, wenn man sich anschaut, wie DateTimeField schafft das datetime-Objekt.
InformationsquelleAutor Chris Lacasse
Können Sie eine ModelForm und überschreiben Sie die
created
Formular-Feld, statt direkt auf Ihr Modell.Etwas wie dieses:
Leider, ich glaube nicht, dass
strptime
unterstützt die GMT-offset-also warum habe ich hart codiert in derinput_format
. Sie können in der Lage sein, überschreiben Sie die 'saubere' Methode, die für das Feld, wenn Sie wollen, schrubben Sie selbst.InformationsquelleAutor Joe Holloway
Glaube ich, dass die DateTimeField erwartet Zeitzone naiv datetime, so müssen Sie Streifen von der (+zzzz) Teil.
Gilt für Python 2.x nur.
Es ist traurig, dass python hat so schlechte Unterstützung für timezone info. Ich meine, es ist einfach genug, um zu convert date time, gmt für das speichern in eine Datenbank. Aber ich Liebe immer noch python 🙂
InformationsquelleAutor Tom
ok das ist, was ich Tat schließlich :
Dank jeder!! 🙂 alle Beiträge waren sehr hilfreich.
InformationsquelleAutor Optimus