我有一个带有价格字段的Django模型:
class Book(models.Model):
title = models.CharField(max_length=200)
price = models.FloatField(null=True, blank=True)
问题是我的用户可能输入245或245.00的价格,我希望系统能够处理。
我可以做一些聪明的事情吗?
答案 0 :(得分:5)
我不明白为什么你需要做任何事情。 float不必具有浮点组件 - 245
与245.00
一样有效。
我会第二次maikhoepfel的建议,你不要使用花车价格。浮点无法准确表示某些十进制值 - 这是标准IEEE浮点算法的限制。但是,我建议您改用DecimalField
,因为这对于具有固定小数位数的值(如价格)非常理想。
答案 1 :(得分:0)
处理价格的最佳做法通常要求您应该使用IntegerField,因为否则您可能遇到时髦的舍入/有限精度错误。只需除以100即可。