2017-04-19 13 views
0

私は2つのビューを持っています:/ notes/and/notes // Noteモデルではmodels.py私はowner変数を持っています。 私は多くのユーザーを持つようにしたいので、私は彼らがの他のノートを表示したくないので、私は許可を作成しました:Django REST

class IsOwner(permissions.BasePermission): 
    def has_object_permission(self, request, view, obj): 
     return obj.owner == request.user 

私はNotesList(generics.ListCreateAPIView)NotesDetail(generics.RetrieveUpdateDestroyAPIView)にこの権限を設定します。ユーザーは/notes/<pk>/に行くと他のノートを見ることはできませんが、/notes/では彼は完全なリストを見ることができます。 どうすれば変更できますか?メモリストに私のメモだけを見たい。 正しい方法はqueryset = Snippet.objects.all().filter(owner=...)をフィルタリングすることだと思いますが、すぐに考えることはできません。

答えて

2

正しいですが、リストビューでクエリセットを上書きする必要があります。ただし、プロセス起動時に実行されるのに対して、要求時にのみ利用可能なデータにアクセスする必要があるため、queryset属性自体ではその属性を実行できません。したがって、このビューでget_querysetメソッドを定義する必要があります。

def get_queryset(self, *args, **kwargs): 
    return Snippet.objects.all().filter(owner=self.request.user) 
関連する問題