Django InvalidOperation:Decimal:u'的无效文字';

Django InvalidOperation:Decimal:u'的无效文字';,django,Django,当用户在每个信封中执行资金分配时,有时他们忘记在其他信封中放入金额,这导致“0”。然后会导致手术无效 如何修复此错误?或者,系统如何仅获取大于0的金额 例外情况 Types: InvalidOperation Value: Invalid literal for Decimal: u'' 分配(应用程序)中的信封/views.py t2_收款人='信封转账' 对于request.POST中的val: 如果val[0:4]=“环境”: env=Envelope.objects.get(pk

当用户在每个信封中执行资金分配时,有时他们忘记在其他信封中放入金额,这导致“0”。然后会导致手术无效

如何修复此错误?或者,系统如何仅获取大于0的金额

例外情况

Types:  InvalidOperation

Value:  Invalid literal for Decimal: u''
分配(应用程序)中的信封/views.py

t2_收款人='信封转账'
对于request.POST中的val:
如果val[0:4]=“环境”:
env=Envelope.objects.get(pk=int(val[4:]))
金额=十进制(请求后[val])

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

我在运行SQL查询并尝试使用查询返回的数据构造数据帧时遇到此错误。对这个问题的修改为我解决了这个问题。我还试图强制转换返回的列值,但最终,将::FLOAT8附加到有问题的字段是我唯一的解决方案

查询示例:

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

sum(美元)是导致我出现问题的字段。我表中的类型是数字(10,6),大小是8。

发布相关代码和错误跟踪。我们不知道您的应用程序中错误的上下文,因此“当用户有时在每个信封中执行资金分配时”没有任何意义。
SELECT sum(dollars)::FLOAT8 FROM [table] WHERE ...