Ich nehme ein DateTimeField von einer API mit dem Format von "2016-08-09T02: 16: 15Z". Ich benutze den folgenden Code, um es zu parsen und es zu dem zu machen, was ich für ein Datum-Zeit-Feld hielt, bekomme aber einen Fehler von einer meiner Klassenmethoden, um die Zeit zu vergleichen. Bitte beachten Sie den Parsing-Code unten:ISO 8601 Feld zu Python DateTime Feld
time= dateutil.parser.parse(x['MatchTime']) #MatchTime is the ISO 8601 field
Die Zeit scheint richtig zu ziehen, aber wenn ich es zu meinem Spiel-Modell hinzufügen, unten eingefügt, meine is_live Methode gibt mir einen Fehler
Spiel Modell:
class Game(models.Model):
time = models.DateTimeField(null=True, blank=True)
livePick = models.BooleanField(default=True)
def is_live(self):
now = timezone.now()
now.astimezone(timezone.utc).replace(tzinfo=None)
if now < self.time:
return True
else:
return False
Dies ist der Fehler, den ich immer bin, wenn ich das Skript ausführen im Spiel mit der Zeit
line 34, in is_live
if now < self.time:
TypeError: unorderable types: datetime.datetime() < NoneType()
hinzufügen
Update: Zeit ist mit den folgenden
zum Spiel Modell hinzugefügtg = Game.objects.create(team1=team1, team2=team2)
g.time = time
g.save()
Jede Hilfe wird sehr geschätzt. Vielen Dank!
Ich versuche, das Feld, um sicherzustellen, mit diesem API-Aufruf nicht leer ist: Zeit = dateutil.parser.parse (x ['MatchTime']) - MatchTime ist ein Feld aus der API mit ISO 8601 Datumsdaten. Ich weiß, dass der Aufruf das ISO 8601-Datum in ein formatiertes Datum konvertiert, aber das Python liest es nicht eindeutig als ein dateTime-Feld. –
Wie wird das Ergebnis dieser Funktion in die Modellinstanzvariable geschrieben? wird "time" definitiv in 'self.time' gespeichert? – solarissmoke
Der obige Code wurde hinzugefügt, um zu zeigen, wie der API-Pull in meinem Spielmodell gespeichert wird. Bitte lassen Sie mich wissen, wenn Sie etwas anderes sehen möchten –