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

Django执行migrate命令报ValueError: bid字段期望数字却得到空字符串求解

问题根源

错误出在自动生成的迁移文件auctions.0005_auto_20211019_1227中,你为Bid模型新增的bid字段是整型IntegerField,但设置的默认值为空字符串'',数值类型字段无法接收字符串类型的默认值,导致迁移执行时类型转换失败抛出报错:

# 错误代码片段
migrations.AddField(
    model_name='bid',
    name='bid',
    field=models.IntegerField(default=''),
),

同时存在两个附带问题需要同步修正:

  • 你当前models.py中Bid模型的出价字段实际命名为p_bid,说明你新增bid字段后又修改了字段名,旧的错误迁移文件未被清理
  • Bid模型的__str__方法中引用了不存在的bid属性,后续调用该方法时会触发属性不存在错误

解决步骤

  1. 清理错误迁移文件:删除auctions/migrations/目录下的0005_auto_20211019_1227.py文件,若有版本号高于0005的其他迁移文件也一并删除,注意不要删除目录下的__init__.py文件
  2. 修正Bid模型的__str__方法:
class Bid(models.Model):
    p_bid = models.IntegerField()
    user = models.ForeignKey(User, on_delete=CASCADE)
    auction = models.ForeignKey(AuctionListing, on_delete=CASCADE)
    bid_date = models.DateTimeField(timezone.now)

    # 将self.bid修改为实际存在的字段self.p_bid
    def __str__(self):
        return '%s' % (self.p_bid)
  1. 重新生成迁移文件:执行命令
    python manage.py makemigrations
  2. 执行迁移:执行命令
    python manage.py migrate
    即可正常完成迁移操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:27:04