2017-02-27 7 views
0
from datetime import datetime, timedelta 
from django.utils.dateparse import parse_date 

私は、設定された時間帯またはカスタム時間帯のいずれかからデータベースログを要求できるようにしようとしています。カスタムの時間帯を通じて送信するとき、私は0の値を使用し、それを測定するintに変換しますDjangoとPython 3、POST値が同じでない場合

camera_id = request.GET.get('camera_id', None) 
    range = request.GET.get('range', None) 
    start = request.GET.get('start', None) 
    end = request.GET.get('end', None) 

    if int(range) == 0: 
     end_date = parse_date(start) 
     start_date = parse_date(end) 
    else: 
     end_date = datetime.now() 
     start_date = end_date - timedelta(hours=int(range)) 

    data = [] 

    camera_logs = CameraLog.objects.filter(camera_id=camera_id, created_at__range=(start_date, end_date)) 

しかし、カスタムの日付範囲を選択するとき、私は、データベースから戻って何も届きません。私は標準の時間単位(3のような)を要求するときにデータを取得しますが、私の日付が正しく解析されているかどうかはわかりません。

私は本当にif int(range) == 0:が本当であるとは思わない...と私は理由が分からない。これを行うより良い方法はありますか?

+0

'parse_date'は' start'と 'end'が' yyyy-mm-dd'という形式の日付であることを期待しています。そうでない場合はNoneを返します。 –

+0

@ThierryLathuilleのように、タイムスタンプもできません。私はこのような文字列を送ります: '2017-02-22 17:01:04' – dcolumbus

+0

まさに。この場合、 'parse_datetime'を使う必要があります。 –

答えて

0

私はコメントできますか、これはあなたの例の誤植かもしれません。正しいかもしれません。私は誤解しています。 <=演算子の代わりに>=演算子を使用してはいけませんか?私は負のint型のテストではなく、正の型の正しいテストを仮定していますか?

+0

それは '=='すぎるかもしれません...投稿された値が '0'かどうかを基本的にチェックしています。それが「0」でなければ、それは私の時間範囲に使用したい数字です。 – dcolumbus

関連する問題