我想停用用户帐户而不是删除它。我想做类似 user.is_active = False 的事情。我有一个删除用户配置文件的 View ,它可以工作,但现在我需要将其更改为仅停用。
这是我的观点:
def delete_profile(request):
user = User.objects.filter(id = request.user.profile.user_id)
try:
user.delete()
except:
messages.error(request,'Please try again.')
return redirect('profile')
messages.success(request, 'Profile successfully deleted.')
return redirect('index')
我试过 User.is_active = False ,它显示成功消息但没有做任何事情。当我在管理面板中检查用户时,它仍然会将用户标记为事件。
知道如何实现这一目标吗?提前致谢
最佳答案
您应该显示不起作用的代码。但是从你的描述来看,你做错了一些事情。
一、.filter()
总是返回一个查询集,而不是一个实例。要获取实例,您应该使用 .get()
.
其次,User
是类(class);实例是 user
.
第三,你有无故在这里做一个查询。 request.user
已经是 User 实例。无需获取该用户,获取其个人资料,向该个人资料询问用户 ID,然后再进行另一次查询以取回您开始使用的用户。只需使用您已有的用户即可。
最后,永远,永远 做一个空白except
,因为这将捕获各种意外错误并隐藏任何可能出错的内容。只捕获您真正知道如何处理的异常。在这种情况下,您不需要处理任何特定的事情;如果出现任何意外错误,让 Django 正常报告该错误。
def delete_profile(request):
user = request.user
user.is_active = False
user.save()
messages.success(request, 'Profile successfully disabled.')
return redirect('index')
关于Django--停用用户帐户而不是删除它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44903773/