python/Django中的十进制数

Chr*_*ris 6 python django decimal django-models

我正在尝试在数据库中进行插入,但似乎是 Decimals 的问题。

我有latitudelongitude,是一个像下面这样的例子:

latitude = models.DecimalField(max_digits=30, decimal_places=15)
Run Code Online (Sandbox Code Playgroud)

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

Place(name="center", description="study center", latitude=41.214555, longitude=2.121451)
Run Code Online (Sandbox Code Playgroud)

但我得到了那个错误: "quantize result has too many digits for current context"

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

Art*_*yan 6

考虑这个模型:

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)
Run Code Online (Sandbox Code Playgroud)

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

p = Place(
    name='Name',
    description='Description',
    latitude=0123456789012345.0123456789012345,
    longitude=0123456789012345.0123456789012345
)
p.save()
Run Code Online (Sandbox Code Playgroud)

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

p = Place(
    name='Name',
    description='Description',
    latitude=01234567890123456.01234567890123456,
    longitude=01234567890123456.01234567890123456
)
p.save()
Run Code Online (Sandbox Code Playgroud)

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