Django对不同模型的相同权限集

问题描述

所以我有两个模型结构如下:

class DataSheetsCluster(models.Model):
    """
    Represents a group of datasheets made by the owner.
    Has it's own icon,name and description.
    A parent can only have one owner at a time.
    """

    class Meta:
        permissions = [
            ('READ_DATA','can read cluster data'),('WRITE_DATA','can write to cluster'),('MANAGE_CLUSTER','can manage cluster'),('MANAGE_FIELD_DATA',"can manage cluster's field data"),('MANAGE_DATASHEETS',"can manage cluster's datasheets"),('MANAGE_ROLES',"can manage cluster's roles"),('MANAGE_FIELDS',"can manage cluster's fields")
        ]

    objects = models.Manager()
    id = models.BigAutoField(primary_key=True,db_index=True,editable=False,auto_created=True)
    name = models.CharField(max_length=50)
    description = models.CharField(max_length=1024,db_index=True)
    members = models.ManyToManyField('api_backend.Member')
    roles = models.ManyToManyField('api_backend.Role')
    datasheets = models.ManyToManyField(DataSheet)
    total_size_limit = models.FloatField(null=True,blank=True,db_index=True)
    created_at = models.DateTimeField(auto_Now=True,db_index=True)

    required_FIELDS = [name]
class DataSheet(models.Model):
    """
    Represents a single dataSheet.
    dataSheets have their own model at the core. Model data is added to
    the dataSheets in the form of separate records.
    """

    class Meta:
        permissions = [
            ('READ_DATA','can read datasheet data'),'can write to datasheet'),"can manage datasheet's field data"),"can manage datasheet's roles"),"can manage datasheet's fields")
        ]

    objects = models.Manager()
    id = models.BigAutoField(primary_key=True,auto_created=True)
    name = models.CharField(max_length=75,db_index=True)
    description = models.CharField(max_length=1024,db_index=True)
    owner = models.ForeignKey('api_backend.Member',on_delete=models.CASCADE,db_index=True)
    fields = models.ManyToManyField('api_backend.DataSheetField')
    overwrites = models.ManyToManyField('api_backend.RoleOverwrite')
    parent = models.ForeignKey('api_backend.DataSheetsCategory',null=True,blank=True)
    cluster = models.ForeignKey('api_backend.DataSheetsCluster',db_index=True)

    required_FIELDS = [name,owner,cluster]

它们背后的想法是,它们都必须具有相同的通用权限集[例如 READ_DATAWRITE_DATAMANAGE_ROLES]。 但是,当我访问 DataSheetsCluster 的 READ_DATA 权限时,它指的是与数据表的 READ_DATA 权限不同的内容

就像为 DataSheetsCluster 设置的权限是一个全局权限集, 另一个是相同的本地集。

这个想法可以在django中实现吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)