我有一个模型,有这个十进制字段规则;
product_price = models.DecimalField(max_digits=10, decimal_places=2)
我从一个xml文件中获取数据,大多数产品的价格都是这样的格式;
847.54
所以后面有实际的数字,对于余数中的分隔符,有"。"(点(,这没关系。
然而,有些产品的价格是这样的;
2906.69
实际数字包括一个额外的逗号,这会导致问题。我得到了这个错误;
django.core.exceptions.ValidationError: ["'2,906.69' value must be a decimal number."]
我应该换型号吗?或者有其他解决方案吗?
在插入DB之前,您可以尝试替换逗号,然后将字符串转换为float。
例如:
def cleanDecimal(value):
return float(value.replace(",", ""))
product_price = models.DecimalField(max_digits=10, decimal_places=2, validators=[cleanDecimal])
例如:
print(float("2,906.69".replace(",", "")))
2906.69