Python 德西马尔菲尔德获胜';我不接受浮动汇率
我有一个模型:Python 德西马尔菲尔德获胜';我不接受浮动汇率,python,django,Python,Django,我有一个模型: Model(models.Model) price = models.DecimalField(max_digits=10, decimal_places=2) 我有一个字符串: new_price = "39.99" 当我尝试以下方法时: model_instance.price = float(new_price) model_instance.save() 我得到django.core.exceptions.ValidationError:{'price':[
Model(models.Model)
price = models.DecimalField(max_digits=10, decimal_places=2)
我有一个字符串:
new_price = "39.99"
当我尝试以下方法时:
model_instance.price = float(new_price)
model_instance.save()
我得到django.core.exceptions.ValidationError:{'price':['确保总共不超过10位。]}
为什么?这与我的工作有关。但您可以将字符串直接与分码字段一起使用:
model_instance.price = "39.99"
model_instance.save()
如果您有动态输入,您可以直接使用以获得所需的精度:
from decimal import *
model_instance.price = Decimal(new_price).quantize(
Decimal('0.01'),
rounding=ROUND_HALF_UP)
那是和我有关的。但您可以将字符串直接与分码字段一起使用:
model_instance.price = "39.99"
model_instance.save()
如果您有动态输入,您可以直接使用以获得所需的精度:
from decimal import *
model_instance.price = Decimal(new_price).quantize(
Decimal('0.01'),
rounding=ROUND_HALF_UP)
试着用decimal.decimal代替float()试着用decimal.decimal代替float()@schwobaseggl我试过了,得到了同样的错误unfortunately@schwobaseggl我试过了,不幸的是,我第一次试过了,但由于某种原因,它不起作用。事实上,指定model\u instance.price=str(new\u price)
成功了,尽管它已经是一个字符串了,但很奇怪!谢谢这是我第一次尝试的,但由于某些原因,它不起作用。事实上,指定model\u instance.price=str(new\u price)
成功了,尽管它已经是一个字符串,但很奇怪!谢谢