2016-08-09 2 views
0

Я беру в DateTimeField из API с форматом «2016-08-09T02: 16: 15Z». Я использую следующий код, чтобы разобрать его и превратить в то, что, как я думал, было полем даты, но я получаю сообщение об ошибке из одного из моих методов класса, чтобы сравнить время. Пожалуйста, смотрите код парсинга ниже:ISO 8601 Поле на Python Поле DateTime

time= dateutil.parser.parse(x['MatchTime']) #MatchTime is the ISO 8601 field 

времени, кажется, тянет правильно, но когда я добавляю его в мою модель игры, вставленной ниже, моего is_live метод дает мне ошибку

игры модель:

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 

Это ошибка я получаю, когда я бегу сценарий, чтобы добавить в игру со временем

line 34, in is_live 
if now < self.time: 
TypeError: unorderable types: datetime.datetime() < NoneType() 

Update: Время добавляется в модель игры со следующим

g = Game.objects.create(team1=team1, team2=team2) 
g.time = time 
g.save() 

Любая помощь очень ценится. Спасибо!

ответ

0

Это происходит потому, что time в вашей модели является нулевым и пустым (None) для экземпляра модели, для которого сравнение не выполняется. Это вызывает исключение, когда вы пытаетесь сравнить его с объектом datetime.

Вы должны учитывать нулевую возможность в вашей логике, например ,:

if self.time is not None and now < self.time: 
    return True 
else: 
    return False 
+0

Я пытаюсь убедиться, что поле не является пустым с этим API вызова: время = dateutil.parser.parse (х ['MatchTime']) - MatchTime - это поле из API с данными даты ISO 8601. Я знаю, что вызов преобразует дату ISO 8601 в отформатированную дату, но питон не читает ее как поле даты. –

+0

Как результат записи этой функции в переменную экземпляра модели? «время» определенно сохраняется в «self.time»? – solarissmoke

+0

Добавлен код выше, чтобы показать, как притяжение API сохраняется в моей игровой модели. Пожалуйста, дайте мне знать, если вы хотите увидеть что-нибудь еще –

Смежные вопросы