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

时间:2018-07-19 08:31:24

标签: python-3.x django-models

我有一个模型,并且有此十进制字段规则;

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."]

我应该改变我的模特吗?还是有其他解决方案?

1 个答案:

答案 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