使用Django REST Framework新增数据触发ValueError错误求助
解决Django REST Framework新增记录时的ValueError问题
嘿,我一眼就定位到你这个错误的根源了!你碰到的 ValueError at /store/ invalid literal for int() with base 10: '',问题出在Product模型的product_id字段定义上。
错误原因分析
你给product_id(AutoField类型的主键)设置了default='',但AutoField是Django专门用来生成自增整数主键的字段,它根本不需要手动指定默认值。当你尝试新增记录时,Django会试图把这个空字符串默认值转换成整数类型的主键,这直接触发了类型转换失败的错误。
修复步骤
修改Product模型
把product_id字段的default=''去掉,正确的定义应该是:class Product(models.Model): product_id = models.AutoField(primary_key=True) # 其他字段保持不变...AutoField本身会自动处理自增逻辑,完全不需要额外的默认值设置。
执行数据库迁移
修改模型后,别忘了更新数据库结构:python manage.py makemigrations python manage.py migrate额外检查(可选)
- 确认你提交的
category: 2对应的Category记录确实存在,避免外键关联错误 - 你的Serializer已经把
product_id设为read_only_fields,这部分是正确的,提交的JSON里不需要包含这个字段,你当前的提交数据格式没问题
- 确认你提交的
做完这些之后,再尝试点击POST按钮提交数据,应该就能正常创建Product记录了。
内容的提问来源于stack exchange,提问作者moh
相关产品推荐
相关产品推荐

