Django 中的中断迁移

bor*_*cle 1 python django postgresql

我在我的模型中创建并随后更改了一个 DecimalField。现在,当我尝试运行时,出现python manage.py migrate以下错误:

decimal.InvalidOperation: quantize result has too many digits for current context
Run Code Online (Sandbox Code Playgroud)

在阅读了 SO 上的各种相关问题后,我尝试增加 max_digits,这无济于事。 我已经手动删除了我的 postgreSQL 数据库中的模型,希望能够在我迁移模型时重新创建它,但我仍然遇到同样的错误,并且无法迁移模型并在数据库中重新创建模型。

这是有问题的模型:

class Version(models.Model):
    version_number = models.DecimalField(default=1.0, max_digits=3,
                                     decimal_places=2)
Run Code Online (Sandbox Code Playgroud)

我能做些什么来解决这个问题?

编辑 当我更改 DecimalField 时,我更改了max_digits

Ada*_*rrh 5

看来您的问题实际上不在于 DecimalField,而是手动删除您的表作为故障排除步骤。

据我所知,该makemigrations工具不会根据现有数据库中的内容进行更改,而是根据之前迁移中定义的内容进行更改。

因此,如果您在不使用它的情况下更改某些内容,则必须手动创建或编辑迁移文件以更正它。

有关编辑迁移文件的示例,请参阅以下内容:

https://docs.djangoproject.com/en/1.8/howto/writing-migrations/

我不确定这里的协议是什么,但可能可以在首次创建表的位置找到迁移并将适用的序列复制粘贴到待处理的迁移文件中。