代码之家  ›  专栏  ›  技术社区  ›  alias51

如何为Django中的单个记录分配组权限

  •  0
  • alias51  · 技术社区  · 7 年前

    我希望在模型中创建记录的用户能够为该记录分配组权限。

    from django.contrib.auth.models import Group, Permission
    
    class MyModel(models.Model):
        title = models.CharField(max_length=200, null=True)
        groups = [ What comes next? ]
    
    0 回复  |  直到 7 年前
        1
  •  1
  •   cagrias    7 年前

    您需要应用对象级权限,通常的方法是将ForeignKey分配给组。以便每个对象都有一个组,组可以有多个MyModel对象。下面是一个例子:

    # models.py
    from django.contrib.auth.models import Group, Permission
    
    class MyModel(models.Model):
        title = models.CharField(max_length=200, null=True)
        groups = models.ForeignKey(Group, on_delete=models.CASCADE)
    

    可以通过以下方式执行对象级别权限:

    def my_view(request):
        filtered_objects = models.MyModel.objects.filter(groups=request.user.groups)
    
    推荐文章