对模型的特定实例的权限

时间:2012-06-06 11:11:49

标签: django permissions

我有一个带有附加字段region的CustomUser模型以及具有相同字段的其他模型。

如何允许CustomUser实例添加/删除/查看其他模型的实例(授予所有权限)仅具有相同的区域值?

修改

使用vivek soundrapandi建议的自定义管理器,我可以

class ShopManager(models.Manager):
    def get_query_set(self):
        return super(ShopManager, self).get_query_set().filter(region=?)

但是如何按当前连接用户的区域过滤商店实例?

这仍然允许CustomUser使用默认的Manager修改其他区域的Shop实例,对吗?

使用Django权限系统无法做到这一点?

由于

2 个答案:

答案 0 :(得分:2)

使用django-guardian(实际就是这样,但是想要更多字符)

答案 1 :(得分:0)

尝试使用模型管理器使用您自己的功能。 click here for docs explanation

行,

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

class Entry(models.Model):
    blog = models.ForeignKey(Blog)
    name = models.CharField(max_length=100)
Entry.objects.filter(blog__name__exact='Beatles Blog')

此示例使用名为“Beatles Blog'”的博客检索所有Entry对象。因此,您的模型管理器应该对您要引用的所有其他类执行相同的操作,并将它们组合在一起以生成单个结果集。如果我理解您的问题是正确的,那么这应该是解决方案。