Django中无法修改AbstractUser模型布尔字段值问题求助
解决Django抽象用户模型布尔字段无法设为True的问题
你代码里的核心问题是赋值语句写错了,视图里用了比较运算符is而非赋值的=,导致字段值根本没被修改。
错误点分析
看你视图里的这段代码:
user.boolean is True
is是用来判断对象实例是否相同的比较运算符,不是赋值符号。这行代码只是做了个无意义的判断,完全没改变user.boolean的取值。
修正步骤
- 把视图里的赋值语句改成
=,这是最关键的修正:
def View(request): user = request.user print(user.username) # 把is改成=,才是真正给字段赋值 user.boolean = True # 原代码里的is_vendor是笔误,改成对应字段名才能看到修改结果 print(user.boolean) user.save() return HttpResponseRedirect(reverse('profile'))
- 修正打印语句:原代码里的
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
相关产品推荐
相关产品推荐

