如何创建自定义用户权限?
How do I create custom user permissions?
我有一个模板表格,用于从员工的角度申请休假。我希望另一个用户接受或拒绝休假,为此,我有一个专用于它的布尔字段。
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
现在我的目标是创建一个自定义权限,以便另一个用户可以只读除 "permission" 字段之外的其余字段,他可以在该字段中接受或拒绝。
我已经尝试使用以编程方式创建用户权限,这反映在用户权限面板中,但没有按我想要的方式运行。
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,
)
请帮助我完成我的项目,谢谢。
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
将此添加到 class 下的 admin.py ....(ModelAdmin)
我有一个模板表格,用于从员工的角度申请休假。我希望另一个用户接受或拒绝休假,为此,我有一个专用于它的布尔字段。
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
现在我的目标是创建一个自定义权限,以便另一个用户可以只读除 "permission" 字段之外的其余字段,他可以在该字段中接受或拒绝。 我已经尝试使用以编程方式创建用户权限,这反映在用户权限面板中,但没有按我想要的方式运行。
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,
)
请帮助我完成我的项目,谢谢。
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
将此添加到 class 下的 admin.py ....(ModelAdmin)