3

これが以前に尋ねられたことは知っていますが、私の状況では、なぜこれがスローされているのかわかりません

計算を実行しようとすると、コンソールから次のエラーが表示されます。

ValueError: invalid literal for int() with base 10: ''

そしてそれはそれがから来ていると言っています

File "/var/sites/live_mbpathways/moneybroker/apps/investments/ajax.py", line 30, in calc_cdic
    investments = Investment.objects.all().filter(plan = plan, financial_institution=fiid, maturity_date__gte = now).order_by('maturity_date').exclude(id=investment_id)

なぜこれが起こっているのか誰にも分かりますか?

そのコードが配置されている私の ajax.py は次のとおりです。

@login_required
@moneybroker_auth
@csrf_exempt
def calc_cdic(request, plan, investment_id=None, *args, **kwargs):
    from investments.models import Investment
    from financial_institutions.models import FinancialInstitution
    from profiles.models import Profile
    from plans.models import Plan
    from datetime import datetime
    now = datetime.now()
    json = {}
    data = request.POST

    if request.is_ajax():
        total = 0
        fiid = data.get('financial_institution')
        amt = data.get('amount') or 0
        pay_amt = data.get('pay_amount') or 0
        mat_amt = data.get('maturity_amount') or 0
        investments = Investment.objects.all().filter(plan = plan, financial_institution=fiid, maturity_date__gte = now).order_by('maturity_date').exclude(id=investment_id)
        for i in investments:
            total += i.maturity_amount
        print total
        json['total'] = float(str(total))
        json['amt'] = float(str(amt))
        json['pay_amt'] = float(str(pay_amt))
        json['mat_amount'] = float(str(mat_amt))
        json['fiid'] = fiid
        print json

    return HttpResponse(simplejson.dumps(json), mimetype='application/json')
4

4 に答える 4

5

数値ではないものを変換しようとしているため、int() 関数が例外をスローしています。

print ステートメントのデバッグを使用して、最初に計画と fiid が何であるか、およびそれらがどのように変化するかを調べることを検討することをお勧めします。

他にできることは、try/catch を使用して int() への呼び出しをラップすることです。

val='a'
try:
    int_val = int(val)
except ValueError:
    print("Failure w/ value " + val)
于 2012-05-16T23:17:21.157 に答える
3

その一連の呼び出しのどこかで、コードが整数に変換しようとしている空の文字列を渡しています。その時点での入力を記録して追跡します。

于 2012-05-16T14:38:09.467 に答える
0

planとの値を確認することをお勧めします。これはfiidplanまたはfiidが自分の考えている値に設定されていないためです。

于 2012-05-16T14:50:48.713 に答える
0

私にとっては、移行フォルダーを削除し、このリンクの一番上の回答の手順に従ってから、移行を再実行する必要がありました。その後、エラーはなくなり、機能しました。

于 2016-06-02T14:44:50.447 に答える