Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python/Django中的十进制数_Python_Django_Django Models_Decimal - Fatal编程技术网

python/Django中的十进制数

python/Django中的十进制数,python,django,django-models,decimal,Python,Django,Django Models,Decimal,我试图在数据库中插入,但似乎小数有问题 我有纬度和经度,例如: latitude = models.DecimalField(max_digits=30, decimal_places=15) 然后,当我尝试插入时,我会写: Place(name="center", description="study center", latitude=41.214555, longitude=2.121451) 但我得到了一个错误:“量化结果对于当前上下文有太多的数字” 我应该能得到那些数字,对吗?我不

我试图在数据库中插入,但似乎小数有问题

我有
纬度
经度
,例如:

latitude = models.DecimalField(max_digits=30, decimal_places=15)
然后,当我尝试插入时,我会写:

Place(name="center", description="study center", latitude=41.214555, longitude=2.121451)
但我得到了一个错误:
“量化结果对于当前上下文有太多的数字”


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

考虑到这种模式:

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)
这应该有效(允许使用的最大位数和小数位数):

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



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

请查看以下内容:您确定数据库已正确迁移吗?,,只是为了确定是什么提示您需要迁移?以MySQL为例,十进制列按如下方式添加:创建表my_TABLE(my_column decimal(6,4)UNSIGNED NOT NULL);Django遵循规范,因此在创建列时,它会使用
max\u digits
decimal\u places
的值来创建正确的列。如果这些值发生了更改,则应相应地更改数据库。仍然不清楚您需要迁移的原因,因为OP没有提到他更改了这些值。假设您最初将
max_digits
设置为6,并且
decimal_places
设置为4,则您的数据库将十进制列定义为decimal(6,4)。在数据库架构中将Django代码更改为15、15(对于
max_digits
decimal_places
)后,该列仍定义为十进制(6,4)。若您试图插入到数据库中的数据不符合这些定义,数据库会向Django“抱怨”,所以您会得到一个错误。这就是为什么需要迁移,以便使模式列与Django代码定义同步。
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()