如何将用户重定向到Django中指定的管理员?

2024-04-16 18:55:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个休假管理系统,其中有几个用户向一个特定的经理报告(以django的形式表示的管理员,假设有多个管理员)。你知道吗

from django.db import models
from django.contrib.auth.models import User

CHOICES = (('1','Earned Leave'),('2','Casual Leave'),('3','Sick Leave'),('4','Paid Leave'))

class Leave(models.Model):

    name = models.CharField(max_length = 50)
    user = models.ForeignKey(User, on_delete = models.CASCADE, null =True)
    employee_ID = models.CharField(max_length = 20)
    department = models.CharField(max_length = 15)
    designation = models.CharField(max_length = 15)
    type_of_leave = models.CharField(max_length = 15, choices = CHOICES, default = None)
    from_date = models.DateField(help_text = 'mm/dd/yy')
    to_date = models.DateField(help_text = 'mm/dd/yy')
    reporting_manager = models.CharField(max_length = 50, default = None)
    reason = models.CharField(max_length= 180)
    accepted = models.BooleanField(('approval status'), default=False)


    def __str__(self):
         return self.name

my application panel

我试过调整我的身体管理员.py通过使用循环和比较报表管理器Column,但我无法达到我的目标。我甚至试过使用内置的用户权限,但那对我没有帮助。简言之,如果有超过管理员与他们的名字。数据/表单应该只对那些管理员可见,用户提交的表单中提到了这些管理员的名字。你知道吗


Tags: django用户namefromimportnonedefaultmodels
1条回答
网友
1楼 · 发布于 2024-04-16 18:55:33

我不太了解模型及其字段。无论如何,您应该重写AdminModel中的get\u queryset函数,并过滤queryset,如下所示

class LeaveAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        qs = super().get_queryset(request)

        #### return everything if the admin is superuser
        if request.user.is_superuser:
            return qs

        ###else do the filtering here based on the staff name [username or anything else]
        return qs.filter(reporting_manager=request.user.username)

相关问题 更多 >