2012-06-06 96 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 –