2011-12-21 25 views
5

私は、ユーザーが自分のリストを作成して編集できるサイトを持っています。Django:UpdateViewユーザーごとの制限

私は、ユーザーがリストを作成できるようにするために、汎用ビューCreateViewを使用しています。

一般的なビューUpdateViewを使用してリストを編集することができますが、リスト作成者だけがリストを編集できるので、login_required=Trueでは不十分です。

2質問:

1)私は、この制限を追加するのURLconfで指定することができます任意のパラメータがありますか?

2)これらの一般的なビューは、GETではなくPOSTでのみ動作する必要がありますか?

おかげ

答えて

4

を見ますthe UpdateView

def get_queryset(self): 
    base_qs = super(YourListUpdateView, self).get_queryset() 
    return base_qs.filter(user=self.request.user) 
2

1)あなたはデコレータを書いて、login_requiredデコレータ、つまりとしてそれを同じように使用することができます。

def user_permitted(function): 
    def decorator(function): 
     def _wrapped_view(request, *args, **kwargs): 
      # get obj from request 
      if obj.user != request.user: 
       return HttpResponseRedirect(reverse('forbidden')) 
      return function(request, *args, **kwargs) 
     return _wrapped_view 
    return decorator(function) 

2)はい、あなたは上get_querysetをオーバーライドすることができdecoratorsDecorating class-based views

関連する問題