Django如何从用户列表及好友列表中排除超级管理员用户
解决方案
你只需要修改2处核心查询逻辑,就能实现从所有前端展示的用户列表中排除超级用户的效果:
1. 修改推荐好友列表查询
打开views.py找到users_list视图,修改首行Profile查询语句:
原代码:
users = Profile.objects.exclude(user=request.user)
替换为:
# 先过滤所有超级用户,再排除当前登录用户自己 users = Profile.objects.filter(user__is_superuser=False).exclude(user=request.user)
这一步会从数据源层面直接把所有超级用户账号排除在推荐好友列表外。
2. 修改用户搜索结果查询
同样在views.py找到search_users视图,修改搜索查询语句:
原代码:
object_list = User.objects.filter(username__icontains=query)
替换为:
# 搜索结果仅返回非超级用户 object_list = User.objects.filter(username__icontains=query, is_superuser=False)
这一步会避免普通用户通过搜索功能找到管理员账号。
可选配置:移除好友列表里的历史管理员
如果之前已经有普通用户添加了管理员为好友,需要在好友列表也隐藏管理员的话,找到friend_list视图修改代码:
原代码:
friends = p.friends.all()
替换为:
friends = p.friends.filter(user__is_superuser=False)
所有修改完成后重启Django服务即可生效。
内容的提问来源于stack exchange,提问作者Rohan_buks
相关产品推荐
相关产品推荐

