Django FloatField,存储在数据库中的小数位数

时间:2017-09-12 17:07:26

标签: python mysql django orm

考虑以下示例模型:

class Product(models.Model):
    weight = FloatField(db_index=True, null=True, blank=True)

FloatField将是MySQL中double类型的字段。现在我希望能够为此字段使用可变的小数位数。因此,当我保存重量为50的产品时,必须将其存储为数据库中的50。当权重为50.0时,必须将其存储为50.0。这似乎是默认行为,因此权重存储在数据库中,就像最初保存它们一样。

但是,从数据库中检索产品时,原始权重50将转换为50.0,因此会添加小数。这可能是因为检索到的值将在Django中转换为float,这会自动添加小数。为了克服这个问题,我尝试扩展from_db_value的{​​{1}}方法,希望能够获取原始值(FloatField而不是50)。但此时该值已转换为50.0

50.0

从数据库访问原始值的最佳方法是什么?然后我就可以使用自己的方法来检查小数位数并返回正确的结果。

1 个答案:

答案 0 :(得分:1)

要检索没有0小数值的原始值,您可以使用'{0:g}'.format(float(value))