【问题标题】:How can we redirect users to specified admin in Django?我们如何将用户重定向到 Django 中的指定管理员?
【发布时间】:2019-01-23 11:02:57
【问题描述】:

我正在开发休假管理系统,其中几个用户向特定的经理报告(就 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

我尝试通过使用循环和比较报告管理器列来调整我的 admin.py,但我无法达到我的目标。我什至尝试使用内置用户权限,但这对我没有帮助。简而言之,如果有超过 admin 的名字。数据/表单应仅对用户提交的表单中提及其姓名的管理员可见。

【问题讨论】:

    标签: python django admin user-permissions


    【解决方案1】:

    我不太了解模型及其字段。无论如何,您应该覆盖 AdminModel 中的 get_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)
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多