无法更新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
相关产品推荐
相关产品推荐

