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

Django中无法修改AbstractUser模型布尔字段值问题求助

解决Django抽象用户模型布尔字段无法设为True的问题

你代码里的核心问题是赋值语句写错了,视图里用了比较运算符is而非赋值的=,导致字段值根本没被修改。

错误点分析

看你视图里的这段代码:

user.boolean is True

is是用来判断对象实例是否相同的比较运算符,不是赋值符号。这行代码只是做了个无意义的判断,完全没改变user.boolean的取值。

修正步骤

  1. 把视图里的赋值语句改成=,这是最关键的修正:
def View(request):
    user = request.user
    
    print(user.username)
    # 把is改成=,才是真正给字段赋值
    user.boolean = True
    # 原代码里的is_vendor是笔误,改成对应字段名才能看到修改结果
    print(user.boolean)
    user.save()

    return HttpResponseRedirect(reverse('profile'))
  1. 修正打印语句:原代码里的user.is_vendor明显是打错了,改成user.boolean才能验证修改是否生效。

额外潜在问题排查

如果修改后还是没效果,可以检查这两点:

  • 确认当前用户已登录,request.user不是匿名用户(匿名用户的字段修改不会保存)
  • 检查模型的save方法:如果image字段为空,Image.open(self.image.path)会直接报错,导致整个保存流程中断。可以给图片处理逻辑加个判断:
def save(self, *args, **kwargs):
    super().save(*args, **kwargs)
    
    # 先判断图片是否存在,再执行压缩逻辑
    if self.image:
        img = Image.open(self.image.path)
        if img.height > 300 or img.width > 300:
            output_size = (300, 300)
            img.thumbnail(output_size)
            img.save(self.image.path)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:30:09