DecimalField的变量返回类型



我有一个类似这样的模型:

class Item(models.Model):
value_a = models.DecimalField(default=0.0, decimal_places=4, max_digits=20)
value_b = models.DecimalField(default=0.0, decimal_places=4, max_digits=20)
value_c = models.DecimalField(default=0.0, decimal_places=4, max_digits=20)

现在假设我有以下项目:

a = Item()
a.value_a = 1.20
a.value_b = 2
a.value_c = Decimal('20.20')
a.save()

当我访问对象(从数据库检索后(时,我得到的值是:

a.value_a = 1.2 <float>
a.value_b = 2 <int>
a.value_c = Decimal('20.20')

请注意,我的DB数据类型可能因不同而异。

DecimalField为什么这么做?我不能总是以python Decimal的形式获取值吗?

如果在更改value的值后save()每个创建的Items,Django将把它们转换为Python Decimals。

a = Item()
a.value = 1.20
a.save()
item_a = Item.objects.get(id=a.id)
print(item_a.value)  # will be Decimal('1.20')

最新更新