【问题标题】:How to assign Group permissions to individual records in Django如何将组权限分配给 Django 中的单个记录
【发布时间】:2019-07-21 23:17:31
【问题描述】:

我有一个模型,我想将特定记录分配给一个用户组(或多个用户组),以便单个记录只能由与其关联的那些组的成员编辑/查看。

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

最好的方法是什么?例如。我可以分配一个 OneToMany 字段吗?比如:

from django.contrib.auth.models import Group, Permission

class MyModel(models.Model):
    title = models.CharField(max_length=200, null=True)
    groups = [ What comes next? ]

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    您想要应用对象级别的权限,执行此操作的常用方法是将 ForeignKey 分配给组。这样每个对象都会有一个 Group 并且组可以有多个 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)
    

    【讨论】:

      猜你喜欢
      • 2014-10-20
      • 2015-02-16
      • 1970-01-01
      • 2019-09-09
      • 2019-08-28
      • 2018-10-24
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      相关资源
      最近更新 更多