【问题标题】:How do I create custom user permissions?如何创建自定义用户权限?
【发布时间】:2019-01-24 04:09:39
【问题描述】:

我有一个模型表格,用于从员工的角度申请休假。我希望另一个用户接受或拒绝请假,为此,我有一个专用的布尔字段。

models.py

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()
    to_date = models.DateField()
    reporting_manager = models.CharField(max_length = 50, default = None)
    reason = models.CharField(max_length= 180)
    permission = models.BooleanField(('status'), default=False)


def __str__(self):
    return self.name

现在我的目标是创建一个自定义权限,以便其他用户可以只读其余字段,除了“权限”字段,他可以接受或拒绝。 我尝试使用以编程方式创建用户权限,这反映在用户权限面板中,但没有按我的意愿运行。

views.py

from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
from .models import Leave


content_type = ContentType.objects.get_for_model(Leave)
permission = Permission.objects.create(
   codename='can_change_status',
   name='Can Change Status',
   content_type=content_type,
)

请帮助我完成我的项目,谢谢。

【问题讨论】:

    标签: python django user-permissions


    【解决方案1】:
    def get_readonly_fields(self, request, obj=None):     
            if obj and request.user.is_staff:
                readonly_fields = [f.name for f in self.opts.fields]
                readonly_fields.remove('permission')    
            return readonly_fields
    

    在你的 admin.py 中添加这个类 ....(ModelAdmin)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-09
      • 2019-11-17
      • 2018-09-10
      • 2019-12-31
      • 2019-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多