2011-12-21 41 views
5

Tôi có một trang web nơi người dùng có thể tạo và chỉnh sửa danh sách của riêng họ.Django: Giới hạn UpdateView cho mỗi người dùng

Tôi đang sử dụng chế độ xem chung CreateView để cho phép người dùng tạo danh sách.

Tôi muốn sử dụng chế độ xem chung UpdateView để cho phép họ chỉnh sửa danh sách nhưng login_required=True không đủ trong trường hợp này, vì chỉ người tạo danh sách mới có thể chỉnh sửa danh sách của mình.

2 câu hỏi:

1) có tham số nào tôi có thể chỉ định trong URLconf để thêm hạn chế này không?

2) Tôi có thể áp đặt các chế độ xem chung đó chỉ nên hoạt động với POST chứ không phải GET?

Cảm ơn

Trả lời

4

Bạn có thể ghi đè lên get_queryset trên số UpdateView:

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

1) bạn có thể viết trang trí và sử dụng nó cùng một cách như login_required trang trí, ví dụ:

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) vâng, xem decoratorsDecorating class-based views

Các vấn đề liên quan