python / Django中的十进制数

时间:2014-07-02 06:56:03

标签: python django django-models decimal

我试图在数据库中插入,但似乎是Decimals的一个问题。

我有latitudelongitude,如下所示:

latitude = models.DecimalField(max_digits=30, decimal_places=15)

然后,当我尝试插入时,我写道:

Place(name="center", description="study center", latitude=41.214555, longitude=2.121451)

但是我收到了这个错误:"quantize result has too many digits for current context"

我应该能够拥有这些数字,对吧?我不明白为什么会收到这个错误。如果有人可以帮助我,那我真的很感激。

2 个答案:

答案 0 :(得分:2)

考虑这个模型:

class Place(models.Model):
    name = models.TextField()
    description = models.TextField()
    longitude = models.DecimalField(max_digits=30, decimal_places=15)
    latitude = models.DecimalField(max_digits=30, decimal_places=15)

这应该有效(使用的最大允许位数和小数位数):

p = Place(
    name='Name',
    description='Description',
    latitude=0123456789012345.0123456789012345,
    longitude=0123456789012345.0123456789012345
)
p.save()

这应该失败(超过顶部的值):

p = Place(
    name='Name',
    description='Description',
    latitude=01234567890123456.01234567890123456,
    longitude=01234567890123456.01234567890123456
)
p.save()

确保在更改Django代码后相应地迁移/更改了数据库。

答案 1 :(得分:0)

我在某处读到可以使用相同的max_digits和decimal_places,并且我有相同数字的经度......我把它放在与纬度相同的方式,删除数据库,再次使用dbsync生成它,现在它已经是' s正确地进行插入。 谢谢大家!