2013-03-03 33 views
2

当用户在每个信封中执行金钱分配时,他们忘记将金额存入其他信封,结果为'0'。然后它会导致InvalidOperation。InvalidOperation:Decimal的无效文字:u''

如何解决此错误?或者系统如何获得只有大于0的数量?

异常

Types: InvalidOperation 

Value: Invalid literal for Decimal: u'' 

信封/ views.py在分配(应用程序)

  t2_payee = 'Envelope Transfer' 



     for val in request.POST: 

      if val[0:4] == "env_": 

       env = Envelope.objects.get(pk=int(val[4:])) 

       amt = Decimal(request.POST[val]) 


<WSGIRequest 
path:/envelopes/allocate/6313/, 
GET:<QueryDict: {}>, 
POST:<QueryDict: {u'allocation_date': [u'2013-03-03'], u'month': [u'03'], 
     u'source': [u'6313'], u'year': [u'2013'], u'env_6316': [u''], 
     u'csrfmiddlewaretoken': [u'3kKoVymvIpbyhCknE1c3WH6YFznTaEoj'], 
     u'env_6315': [u'1'], u'env_6314': [u'0']}>, 
COOKIES:{'__utma': '136509540.132217190.1357543480.1362303551.1362307904.34', 

'__utmb':“1

+0

发布相关的代码和错误跟踪。我们不知道应用程序中的错误背景,所以“当用户有时在每个信封中分配金钱”意味着什么。 – 2013-03-03 12:09:50

回答

5

在env_6316的你的示例值是空的,没有按十进制不知道如何将其转换为数字。你应该检查val是否为空,如果是,则在转换为Decimal之前用0替换它。

0

我在运行SQL查询时遇到此错误,并尝试用查询返回的数据构造熊猫数据框。对查询的更改为我解决了问题。我也试图CAST返回的列值,但最终,追加:: FLOAT8到有问题的字段是唯一的解决方案。

例子查询:

SELECT sum(dollars)::FLOAT8 FROM [table] WHERE ... 

金额(元)是导致该问题对我来说是场。它是我的表中的类型是数字(10,6)和大小是8.