Django Python十进制数字格式化逗号问题



我有一个模型,有这个十进制字段规则;

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

最新更新