我有一个模型,并且有此十进制字段规则;
product_price = models.DecimalField(max_digits=10, decimal_places=2)
我正在从xml文件中获取数据,大多数产品价格都与此格式类似;
847.54
因此,在其余部分之后的分隔符之后有一个实际数字“'”。 (点),就可以了。
但是某些产品价格是这样的
2,906.69
实际数字包含一个逗号,这会引起问题。我收到此错误;
django.core.exceptions.ValidationError: ["'2,906.69' value must be a decimal number."]
我应该改变我的模特吗?还是有其他解决方案?
答案 0 :(得分:0)
您可以尝试替换逗号,然后将字符串转换为float,然后再插入DB。
例如:
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