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

无法更新Teacher模型chat_user_status字段 save()调用后无变化且无报错

Django中TeacherProfile的chat_user_status字段更新无效问题修复

下面针对你代码里的两处错误逐一说明修复方案:

1. 登录逻辑中的错误

你在登录后直接给user.chat_user_status赋值,但chat_user_status是TeacherProfile模型的字段,不属于UserProfile。由于两个模型是一对一关联(且设置了related_name='teacher'),应该通过user.teacher访问对应的TeacherProfile实例,再修改字段。

修复后的登录逻辑代码:

def login_user(request):
    logout(request)
    email = password = ''

    if request.POST:
        email = request.POST['email']
        password = request.POST['password']

        user = authenticate(username=email, password=password)
        if user is not None:
            if user.is_active:
                login(request, user)
                if is_teacher(user):
                    # 通过related_name关联访问TeacherProfile
                    user.teacher.chat_user_status = True
                    user.teacher.save()

2. 聊天状态更新函数中的错误

你用字典索引的方式teacher_profile['chat_user_status']=False修改字段值,这不符合Django模型实例的操作规范。模型字段必须通过属性赋值的方式修改,不能像字典一样直接用键访问。

另外建议捕获具体的TeacherProfile.DoesNotExist异常,避免吞掉其他未知错误。

修复后的更新函数代码:

def update_chatuser_status(uid):
    user_profile = UserProfile.objects.get(id=uid)
    teacher_profile = None

    try:
        teacher_profile = TeacherProfile.objects.get(teacher_id=user_profile.id)
    except TeacherProfile.DoesNotExist:
        pass

    if teacher_profile is not None:
        # 使用属性赋值修改字段
        teacher_profile.chat_user_status = False
        teacher_profile.save()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:07:09