Django:每行(而不是每个表)的授权规则

时间:2019-06-07 14:55:53

标签: django authorization

Django能够根据用户/和/或/组<表> 授予访问权限。

这里是一个示例:

give access permissions based on users / and / or / groups

我想要更详细的粒度:除了表的,我想要这个原理。

背后的想法是:用户可以创建某些内容(无论表是什么),并希望与其他用户共享该内容(只读/或/读写)。

我想到了这样的模型,但是它无法正常工作,因为它将迅速变得太大。我该如何实施?

    class AccessRight(models.Model):
    A_R = 1
    A_W = 2
    A_RW = A_R | A_W
    ACCESS_RIGHTS = {A_R: {'long': 'Read', 'short': 'R'},
                     A_W: {'long': 'Write', 'short': 'W'},
                     A_RW: {'long': 'Read/Write', 'short': 'RW'}, }
    table_name = models.CharField(max_length=50, default=None, blank=True,
                                  db_index=True)
    row_id = models.PositiveIntegerField(default=None, blank=True, )
    user = models.ForeignKey(User, blank=False, on_delete=models.CASCADE)
    right = models.IntegerField(
        choices=[(idx, '{} ({})'.format(desc['long'], desc['short']))
                 for idx, desc in ACCESS_RIGHTS.items()],
        default=A_R)

0 个答案:

没有答案