2017-08-26 6 views
0

私の問題は私のデータベースが空のとき、私はDjango/Pythonで空リストの範囲外の例外リストインデックスを処理する方法は?

> period = Period.objects.all() 
>  try: 
>   period_current = [obj for obj in period if ((obj.is_current)==True)] 
>      total_payment_period_current_dict = LeasePayment.objects.filter(payment_date__range=[period_current[0].start_date, 
> period_current[0].end_date]).aggregate(Sum('amount')) ... 
>   total_payment_period_current = total_payment_period_current_dict['amount__sum'] 
>  except ValueError: 
>   raise Http404("Can't perform calculation for total_payment_period_current, check data ") 

範囲外/リストインデックスで、このエラーに

はIndexErrorを取得しています私は意味のあるを与えることexeptionでそれを扱うことができる望んだということですエラーが発生しますが、動作しません。意味のあるエラーを出すために私ができること。または、理想的には空のテーブルの場合には、この例外をすべて避けることですか?

答えて

0

このエラーを処理したい場合は、リストの長さをチェックすることをお勧めします。

try: 
    period_current = [obj for obj in period if ((obj.is_current)==True)] 
    if len(period_current == 0) { 
     raise Http404("Can't perform calculation for total_payment_period_current, check data ") 
    } 
    total_payment_period_current_dict = LeasePayment.objects.filter(payment_date__range= 
            [period_current[0].start_date, 
       period_current[0].end_date]).aggregate(Sum('amount')) 
     total_payment_period_current = total_payment_period_current_dict['amount__sum'] 
    except ValueError: 
     raise Http404("Can't perform calculation for total_payment_period_current, check data ") 

これはあなたのケースでは間違った例外です。 ValueError例外の代わりにIndexError例外を使用します。

except IndexError: 
    raise Http404("Can't perform calculation for" + 
        "total_payment_period_current, check data ") 

This回答はこの問題を理解するのに役立ちます。

関連する問題