Django ORM - einen rohen Wert zuweisen DecimalField
-
16-09-2019 - |
Frage
EDIT !!! -. Das Gießen des Wertes in einen String scheint gut zu funktionieren, wenn ich einen erstellen neue Objekt, aber wenn ich versuche, ein bestehendes Objekt zu bearbeiten, es ist es nicht zulassen, dass
So habe ich ein Dezimalfeld in einem meiner Modelle von Decimal (3,2)
Wenn ich abfragen, bis all diese Objekte und versuche, dieses Feld zu setzen:
fieldName = 0.85
oder
fieldName = .85
Es wird eine hissy werfen, "Can not float zu DecimalField konvertieren, versuchen Konvertierung in einen String ersten" ...
Also ich:
fieldName = str(0.85)
gleiche Fehler.
Ich habe sogar versucht:
fieldName = "0.85"
Die gleiche Fehler. Bin ich in eine Art Rahmen Bug läuft hier, oder was? Beachten Sie, dass, wenn ich in Django Admin tatsächlich gehen und die Objekte manuell bearbeiten, es funktioniert gut.
Ich bin mit Django 1.1 auf Python 2.6
Lösung
from decimal import Decimal
object.fieldName = Decimal("0.85")
oder
f = 0.85
object.fieldName = Decimal(str(f))
Andere Tipps
Die Django DecimalField ist“... dargestellt durch ein in Python Decimal Instanz.“ Sie könnten versuchen:
>>> obj.fieldName = Decimal("0.85")
Verhalten kann sich auch auf dem Datenbank-Backend abhängig Sie verwenden. Mit SQLite, bin ich in der Lage String-Werte DecimalFields in neuen und bestehenden Objekten ohne Fehler zu vergeben.