3

編集!!!-新しいオブジェクトを作成するときは値を文字列にキャストするのはうまくいくようですが、既存のオブジェクトを編集しようとするとできません。

したがって、Decimal(3,2) のモデルの 1 つに小数フィールドがあります。

これらすべてのオブジェクトをクエリして、このフィールドを設定しようとすると:

fieldName = 0.85

また

fieldName = .85

「float を DecimalField に変換できません。最初に文字列に変換してみてください」というヒストリック フィットがスローされます...

だから私はする:

fieldName = str(0.85)

同じエラー。

私も試しました:

fieldName = "0.85"

同じエラー。ここである種のフレームワークのバグに遭遇していますか、それとも何ですか? 実際に Django Admin にアクセスしてオブジェクトを手動で編集すると、正常に動作することに注意してください。

Python 2.6でDjango 1.1を実行しています

4

2 に答える 2

11
from decimal import Decimal
object.fieldName = Decimal("0.85")

また

f = 0.85
object.fieldName = Decimal(str(f))
于 2009-09-24T21:20:21.120 に答える
3

Django DecimalFieldは「... python Decimalインスタンスによって表されます」。あなたは試すことができます:

>>> obj.fieldName = Decimal("0.85")

動作は、使用しているデータベース バックエンドによっても異なる場合があります。sqlite を使用すると、新しいオブジェクトと既存のオブジェクトの DecimalFields に文字列値をエラーなしで割り当てることができます。

于 2009-09-24T18:39:29.117 に答える