2016-08-09 8 views
0

"2016-08-09T02:16:15Z"という形式のAPIからDateTimeFieldを取得しています。私はそれを解析し、私は日付の時間フィールドであると思ったものにするために、以下のコードを使用していますが、時間を比較する私のクラスのメソッドの1つからエラーを取得しています。以下の解析コードを参照してください:私は私のゲームのモデルに追加するときISO 8601フィールドからPython DateTimeフィールド

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

を時間が私is_live方法は私にエラー

ゲームを与えている、以下の貼り付け、正しく引っ張っているように見えるが、モデル:私は時間

line 34, in is_live 
if now < self.time: 
TypeError: unorderable types: datetime.datetime() < NoneType() 
でゲームに追加するためのスクリプトを実行したときにこれは私が取得していますエラーです

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 

更新: 時間は、任意の助けを大幅に高く評価され、次の

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

でゲームのモデルに追加されます。ありがとうございました!

答えて

0

モデル内のtimeがヌル入力可能で、比較に失敗したモデルインスタンスが空(None)なので、これは起こっています。これは、datetimeオブジェクトと比較しようとすると例外が発生します。

あなたは、私がフィールドには、このAPIの呼び出しと空でないことを確認しようとしています

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

,:例えば、あなたのロジックでヌル可能性を考慮する必要があります。時間= dateutil.parser.parse(xと['MatchTime']) - MatchTimeは、ISO 8601の日付データを持つAPIのフィールドです。私は、呼び出しがISO 8601の日付をフォーマットされた日付に変換していることを知っていますが、PythonがdateTimeフィールドとして明示的にそれを読み取っていません –

+0

モデルインスタンス変数にその関数の結果がどのように書き込まれますか?間違いなく 'self.time'に' time'が保存されていますか? – solarissmoke

+0

上記のコードを追加して、APIプルをゲームモデルに保存する方法を示しました。あなたが何か他のものを見たいと思ったら教えてください –

関連する問題