2017-02-06 75 views
1

我有一個組EuropartsBuyer和型號Product如何在Django中檢查當前用戶的權限?

以下代碼向產品模型添加權限。

class Meta: 
     permissions = (
      ("can_add_cost_price", "Can add cost price"), 
     ) 

在我的一個觀點中,我有以下代碼將此權限添加到該組。

europarts_buyer, created = Group.objects.get_or_create(name='EuropartsBuyer') 
add_cost_price = Permission.objects.get(codename='can_add_cost_price') 
europarts_buyer.permissions.add(add_cost_price) 

在Django Admin的幫助下,我已將用戶添加到組EuropartsBuyer

當我在另一視圖中

if request.user.has_perm('can_add_cost_price'): 
    do something 

使用下面的代碼的結果被認爲是True但它示出False。因此,if子句下的代碼不會運行。

我已經在Django shell中導入了當前登錄的用戶,當我再次測試權限時,它顯示False。

我在這裏做錯了什麼?

+0

你檢查request.user是一個AnonymousUser實例? –

+0

@ ThulasiRam是的。我必須登錄才能訪問該特定視圖。 – MiniGunnR

+0

我得到但如果您使用DRF並刪除了身份驗證類,但您在請求中登錄了..用戶將是匿名。所以你可以嘗試打印request.user之前檢查權限,你可以肯定的方式。 @MiniGunnR –

回答

4

試試這個:

if request.user.has_perm('app_name.can_add_cost_price'): 

docs

其中每個燙髮的格式爲 'app_label.permission代號'

相關問題