Xadmin后台显示只是属于登陆用户权限的功能数据

xadmin后台,如果一个功能的权限划分还不能满足需求,需要根据不同的用户在同一功能的数据中做一个遍历和过滤,可以按照下面的做法

下面的做法适用于xadmin后台,如果是django默认admin后台,可以不采用,有更方便的办法,直接重写queryset方法,根据request.user来进行遍历。

新增一个模块(middleware)

  • 新增一个目录在app的目录下面,然后创建一个空的__init__py文件
  • 创建一个threadlocals.py文件
#!/usr/bin/python
try:
    from threading import local
except ImportError:
    from django.utils._threading_local import local

_thread_locals = local()
def get_current_user():
    return getattr(_thread_locals, 'user', None)

class ThreadLocals(object):
    """Middleware that gets various objects from the
    request object and saves them in thread local storage."""
    def process_request(self, request):
        _thread_locals.user = getattr(request, 'user', None)

功能模块新增登陆用户的外键列

from django.contrib.auth.models import User

user_name = models.ManyToManyField(User,verbose_name=u"名称")
  • 满足同一功能谋一跳数据可以多个用户访问和操作

重写功能模块的admin后台class部分功能

重写queryset方法,主要重点是获取登陆用户的信息,不过上面的模块可以实现这一点

from myapp.middleware import threadlocals

    def queryset(self):
        qs = super(SyncListAdmin, self).queryset()
        self.login_user = threadlocals.get_current_user()
        return qs.filter(user_name=self.login_user)

完成以上内容,注册功能的admin模块,再次访问,根据登陆用户来决定是否显示某功能的每一天数据。

转载于:https://my.oschina.net/mesopotamia/blog/416287

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值