Getting a ValueError: invalid literal for int() with base 10: '' error and don't know why
我知道以前有人问过这个问题,但就我的情况而言,我似乎不明白为什么要扔这个。
当我尝试运行我的计算时,控制台会给我这个错误:
它说它来自
1 2 | 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代码所在的位置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | @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') |
号
int()函数正在引发异常,因为您试图转换的对象不是数字。
我建议您可以考虑使用调试print语句来了解计划和fiid的初始值以及它们是如何变化的。
您可以做的另一件事是使用try/catch包装对int()的调用
1 2 3 4 5 | val='a' try: int_val = int(val) except ValueError: print("Failure w/ value" + val) |
在调用链的某个地方,您传递的是一个空字符串,然后代码试图将其转换为整数。记录您的输入以便跟踪。
对于我来说,我必须删除迁移文件夹,并按照此链接中最上面的答案中的步骤进行操作,然后重新运行迁移,然后错误就消失了,并且成功了。
建议您查看