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

Django模型报错:TypeError: Field 'last_boundary'期望数值却得到IntegerField

错误排查与解决方法

错误原因

出现TypeError: Field 'last_boundary' expected a number but got <django.db.models.fields.IntegerField>的核心原因是:你在给last_boundary字段赋值时,传入了IntegerField字段对象,而非具体的整数值。比如在创建/更新Quiz_Model实例时,错误地写了类似last_boundary=models.IntegerField(default=1)的代码,把字段类本身当作值传入,导致类型不匹配。

模型代码中的潜在问题

除了上述直接原因,你的模型代码还有两处需要修正的问题:

  1. user字段default设置错误:外键字段存储的是关联用户的ID(整数类型),但你设置了default=''(空字符串),这会导致类型不兼容,可能间接引发其他字段的异常。
  2. save方法逻辑瑕疵:if not self.last_boundary:会把last_boundary=0的情况判定为False,进而覆盖为max_test_number的值。如果业务逻辑允许last_boundary为0,这个判断逻辑不符合预期。

解决步骤

  1. 修正赋值错误:检查所有创建/更新Quiz_Model实例的代码,确保给last_boundary传递的是具体整数(如0、1、50等),绝对不能传入models.IntegerField()这类字段对象。
  2. 修复user字段配置:
    • 如果允许用户字段为空,修改为:
      user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, default=None)
      
    • 如果必须关联用户,设置default为有效用户ID(比如超级用户ID通常为1):
      user = models.ForeignKey(User, on_delete=models.CASCADE, default=1)
      
  3. 调整save方法逻辑(可选):如果业务允许last_boundary为0,将判断条件改为检查字段是否为None:
    def save(self, *args, **kwargs):
        if self.last_boundary is None:
            self.last_boundary = self.max_test_number
        self.slug = slugify(self.quiz_name)
        super().save(*args, **kwargs)
    
    (Python3中调用super()无需显式传入类名和self,写法更简洁)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:50:04