2011-12-21 61 views
5

我有一個網站,用戶可以在其中創建和編輯自己的列表。Django:每個用戶的UpdateView限制

我正在使用通用視圖CreateView來允許用戶創建列表。

我想使用通用視圖UpdateView來允許他們編輯列表,但在這種情況下login_required=True是不夠的,因爲只有列表創建者可以編輯他/她的列表。

2個問題:

1)有,我可以在URLconf中指定要添加此限制任何參數?

2)我可以強加這些通用視圖應該只適用於POST而不是GET?

感謝

回答

4

你可以在覆蓋get_querysetUpdateView

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)是的,看到decoratorsDecorating class-based views