我想弄清楚如何處理自定義列表權限。Django REST框架中的自定義列表權限
我用例子解釋得最好,所以我編了這個場景來解釋我的問題。
說我有一個User
模型和User
有ForeignKey
到Bank
,一個Bank
可以打開(或沒有)。
我已經設置好,如果Bank
被打開, 此外,User
對象可以被任何人創建(Bank
,也就是說,只能由管理員用戶創建)爲Bank
讀取請求只能被允許的權限。所以,我對Bank
權限是這樣的:
def has_object_permission(self, request, view, obj):
if request.method in permissions.SAFE_METHODS
return obj.opened
return True
如果我把我的觀點,以queryset = Bank.objects.all()
我去/banks
,我仍然可以看到被關閉的銀行(這不是我想要的東西)。如果我去/banks/<pk>
,我會得到一個認證所需的信息(這很好)。
所以,如果我把我的觀點,以queryset = Bank.objects.filter(opened=True)
我去/banks
,瞧,只有打開銀行上市。
這裏是棘手的部分, 如果我繼續前進,建立一個用戶,因爲Bank
是ForeignKey
,我仍然可以看到所有可用的銀行的名單,從不管打開或不選擇,在API瀏覽器。
如何解決這個問題,以便只顯示打開的銀行?希望我對我的例子很清楚。謝謝!
感謝您的答覆,我一直在嘗試了您的解決方案,它適用於我上述問題。 –