2024-09-26 18:01:42 发布
网友
在组织的层级中,如何在部门级提供权限,因为每个员工的数据都在同一个表中。你知道吗
这里S(雇员)是整个组织的基本单位。
现在我想让D部门能看到入口,只有在他们下面的员工, 同样地,对于上层, 谁能告诉我该怎么开始?你知道吗
一定是django吗?你知道吗
这种遍历样式的布局看起来更像金字塔的工作。你知道吗
https://pypi.python.org/pypi/django-mptt 似乎是一个很好的起点,为您的树结构,但与权限系统,你是自己的
假设管理器的用户对象有一个名为unit的外键,其级别为它们所代表的级别(B1,C3,…)
首先,您需要一种方法来获取所有员工的后代。就像克莱德提到的,django mptt会让你的生活更轻松。只要在mptt设置正确的情况下运行user.unit.get_leafnodes(),您就拥有了所有受管员工。 见MPTTModel.get_leaf_nodes。你知道吗
user.unit.get_leafnodes()
那你需要利用这些信息。你知道吗
如果您使用的是django管理,那么可以在ModelAdmin.get_queryset中使用它。get\u queryset将请求作为参数。只要访问request.user,你就可以重新站起来了。然后你就可以用ModelAdmin.has_change_permission和家人把事情锁得更紧一些。你知道吗
request.user
如果您想要更多的控制,请查看基于类的通用视图。你的views.py可以这么简单:
views.py
from django.views import generic from .models import Employee class EmployeeList(generic.ListView): def get_queryset(self): return self.request.user.unit.get_leafnodes() class EmployeeCreate(generic.edit.CreateView): fields = ["name"] def get_queryset(self): return self.request.user.unit.get_leafnodes() class EmployeeUpdate(generic.edit.UpdateView): fields = ["name"] def get_queryset(self): return self.request.user.unit.get_leafnodes()
编辑视图将基于queryset返回的对象创建一个ModelForm。字段属性是必需的。 参见generic views和those based on models forms上的文档。你知道吗
一定是django吗?你知道吗
这种遍历样式的布局看起来更像金字塔的工作。你知道吗
https://pypi.python.org/pypi/django-mptt 似乎是一个很好的起点,为您的树结构,但与权限系统,你是自己的
假设管理器的用户对象有一个名为unit的外键,其级别为它们所代表的级别(B1,C3,…)
首先,您需要一种方法来获取所有员工的后代。就像克莱德提到的,django mptt会让你的生活更轻松。只要在mptt设置正确的情况下运行
user.unit.get_leafnodes()
,您就拥有了所有受管员工。见MPTTModel.get_leaf_nodes。你知道吗
那你需要利用这些信息。你知道吗
如果您使用的是django管理,那么可以在ModelAdmin.get_queryset中使用它。get\u queryset将请求作为参数。只要访问
request.user
,你就可以重新站起来了。然后你就可以用ModelAdmin.has_change_permission和家人把事情锁得更紧一些。你知道吗如果您想要更多的控制,请查看基于类的通用视图。你的
views.py
可以这么简单:编辑视图将基于queryset返回的对象创建一个ModelForm。字段属性是必需的。 参见generic views和those based on models forms上的文档。你知道吗
相关问题 更多 >
编程相关推荐