首页 > 解决方案 > 在 django 中手动提供权限

问题描述

我正在尝试创建自定义权限,对于每个用户(管理员),我们都有多个权限,例如(delete,creaet,post,update,view a specific part of the app),每个用户都有多个权限

class UserPermission(models.Model):
    type_of_permission = models.CharField(max_length=30,unique=True)
    active = models.BooleanField(default=True)
    def __str__(self):
       return self.type_of_permission

    class Meta:
        db_table = 'user_permission'


class UserAccount(AbstractBaseUser):
   username = models.CharField(max_length=80,unique=True)
   active = models.BooleanField(default=True)
   permis = models.ManyToManyField(UserPermission)


class Post(models.Model):
   admin = models.ForeignKey(UserAccount,on_delete=models.CASCADE)
   title= models.CharField(max_length=80)

例如我们有type_of_permission = create new post , active = True type_of_permission = delete posts , active = False等等,并且用户想要删除帖子,我想过滤用户if request.user has delete posts active = False然后不允许该用户删除对象

def delete_posts(request,id=id):
    obj = get_object_or_404(Post,id=id)
    #how to filter if the requested user have permission to delete post
        obj.delete()
    #if not have permission then
    messages.error(request,'you dont have permission to delete')

请问可以手动定义权限吗?

标签: pythonmysqldjango

解决方案


推荐阅读