You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django DecimalField序列化失败:执行makemigrations报ValueError错误

解决Django中DecimalField引发的ValueError: Cannot serialize: Ellipsis错误

我之前也碰到过一模一样的问题,原因其实很清晰:

你在定义模型的DecimalField时用了省略号...作为占位符,就像这段代码里这样:

class MyClass(models.Model):
    price = models.DecimalField(..., max_digits=5, decimal_places=2)

Django的迁移系统需要把所有字段参数序列化后写入迁移文件,但它没办法处理...这个特殊符号,所以执行python manage.py makemigrations时就会抛出那个序列化错误。

解决办法

直接把字段里的...删掉就行。DecimalField如果用关键字参数传递max_digits和decimal_places的话,不需要必填的位置参数(也就是verbose_name),修改后的代码可以是这样:

class MyClass(models.Model):
    price = models.DecimalField(max_digits=5, decimal_places=2)

要是你想给字段加个友好的后台显示名称,也可以补上verbose_name:

class MyClass(models.Model):
    price = models.DecimalField("商品价格", max_digits=5, decimal_places=2)

改完之后再运行python manage.py makemigrations,就能正常生成迁移文件了。

额外补充:Django迁移的核心要求是所有模型字段的参数都能被序列化存储,像...这种占位符不符合序列化规则,所以才会触发这个报错。

内容的提问来源于stack exchange,提问作者Ilan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:24:04