drf 在viewsets中對(duì)象級(jí)別的權(quán)限控制方法為什么不執(zhí)行?
class?IsLeaderAndOwnerPermission(permissions.BasePermission): ???def?has_object_permission(self,?request,?view,?obj): ??????print(request.user) ??????#?if?request.method?in?permissions.SAFE_METHODS: ??????#??return?True ??????'''判斷是否是管理者且管理自己及下屬''' ??????#?return?obj.user?==?request.user
只有has_permission(self,request,view)方法可以執(zhí)行,但又怎么判斷操作的是自己所屬呢?
2020-12-08
請(qǐng)注意,通用視圖將檢查適當(dāng)?shù)膶?duì)象級(jí)別權(quán)限,但是,如果您要編寫自己的自定義視圖,則需要確保自己檢查對(duì)象級(jí)別權(quán)限。您可以通過
self.check_object_permissions(request, obj)
在擁有對(duì)象實(shí)例后從視圖中進(jìn)行調(diào)用來實(shí)現(xiàn)。APIException
如果任何對(duì)象級(jí)權(quán)限檢查失敗,則此調(diào)用將引發(fā)適當(dāng)?shù)恼{(diào)用,否則將簡單地返回。還要注意,通用視圖將僅檢查對(duì)象級(jí)權(quán)限以獲取檢索單個(gè)模型實(shí)例的視圖。如果需要列表視圖的對(duì)象級(jí)過濾,則需要單獨(dú)過濾查詢集。有關(guān)更多詳細(xì)信息,請(qǐng)參見過濾文檔。
我明白了,但過濾依然 不懂,付費(fèi)課程可以學(xué)到嗎?