2

ユーザーが各封筒にお金の割り当てを実行するとき、時々彼らは「0」になる他の封筒に金額を入れるのを忘れました。その後、InvalidOperationになります。

このエラーを修正するにはどうすればよいですか?または、システムが0より大きい量のみを取得するにはどうすればよいですか?

例外

Types:  InvalidOperation

Value:  Invalid literal for Decimal: u''

割り当て中のenvelopes/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

4

2 に答える 2

6

あなたの例ではenv_6316の値は空です.Decimalはそれを数値に変換する方法を知りません. val が空かどうかを確認し、空の場合は Decimal に変換する前に 0 に置き換えてください。

于 2013-03-03T12:35:49.553 に答える
0

SQL クエリを実行し、クエリから返されたデータを使用して Pandas データフレームを構築しようとしたときに、このエラーが発生しました。クエリを変更すると、問題が解決しました。また、返された列の値をキャストしようとしましたが、最終的には、問題のあるフィールドに ::FLOAT8 を追加することが唯一の解決策でした。

クエリの例:

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

sum(dollars) は、私にとって問題を引き起こしているフィールドでした。私のテーブルのタイプは数値(10,6)で、サイズは8でした。

于 2015-01-12T20:45:39.470 に答える