2012-06-06 125 views
0

我有一个CustomUser模型,其他字段为region和其他具有相同字段的模型。模型的特定实例的权限

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

编辑

使用自定义管理器中,维韦克soundrapandi的建议,我可以做

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

,但我如何通过当前连接的用户的区域筛选店铺的实例?

这仍然允许CustomUser使用默认管理器修改其他区域的Shop实例,对吧?

有没有办法使用Django权限系统来做到这一点?

谢谢

回答

2

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

+0

似乎我必须为每个对象设置权限。有没有办法为一个域的给定值的所有实例设置一次权限,甚至那些尚未创建的实例? – jul

0

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

OK,

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') 

这个例子检索所有条目以博客的名字是 '披头士博客' 的对象。所以,你的模型管理器应该对所有你想要引用的其他类执行相同的操作,并将它们组合起来产生一个结果集。如果我已经理解了你的问题是正确的,那么这应该是解决方案。

+0

谢谢。我用更多的问题编辑了我的问题。 – jul

+0

编辑我的答案也是:D –