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

使用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会试图把这个空字符串默认值转换成整数类型的主键,这直接触发了类型转换失败的错误。

修复步骤

  1. 修改Product模型
    把product_id字段的default=''去掉,正确的定义应该是:

    class Product(models.Model):
        product_id = models.AutoField(primary_key=True)
        # 其他字段保持不变...
    

    AutoField本身会自动处理自增逻辑,完全不需要额外的默认值设置。

  2. 执行数据库迁移
    修改模型后,别忘了更新数据库结构:

    python manage.py makemigrations
    python manage.py migrate
    
  3. 额外检查(可选)

    • 确认你提交的category: 2对应的Category记录确实存在,避免外键关联错误
    • 你的Serializer已经把product_id设为read_only_fields,这部分是正确的,提交的JSON里不需要包含这个字段,你当前的提交数据格式没问题

做完这些之后,再尝试点击POST按钮提交数据,应该就能正常创建Product记录了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:42:46