Django serializer.save()返回HTTP 500错误的解决方法
Django订单系统serializer.save()报500错误:order_order表无paid_amount字段解决方法
问题原因
你在models.py的Order模型中定义了paid_amount字段,但该字段并未同步到数据库的order_order表中,导致执行serializer.save()时数据库找不到对应字段,抛出500错误。
解决步骤
1. 生成迁移文件
在项目根目录下执行命令,为order应用生成字段变更的迁移文件:
python manage.py makemigrations order
该命令会自动检测模型的变更,生成对应的数据表结构修改脚本。
2. 执行数据库迁移
运行迁移命令,将模型变更同步到数据库:
python manage.py migrate
执行完成后,order_order表会新增paid_amount字段,即可正常保存数据。
迁移异常处理(可选)
如果执行迁移时出现报错,可按以下步骤排查:
- 确认
order应用已添加到settings.py的INSTALLED_APPS列表中 - 若存在未应用的历史迁移,先执行
python manage.py migrate应用所有待处理迁移 - 若迁移历史混乱,可删除
order/migrations目录下除__init__.py外的所有文件,再重新生成并执行迁移
代码逻辑说明
你的序列化器和视图代码本身没有问题,serializer.save(user=request.user, paid_amount=paid_amount)的传参方式符合DRF规范,问题仅出在数据库表结构未同步模型的字段变更。
内容的提问来源于stack exchange,提问作者Larry
相关产品推荐
相关产品推荐

