2013-03-15 52 views
3

我有這樣一個模式:如何限制某個用戶訪問UpdateView?

models.py:

class Evento(models.Model): 
    [...] 
    user = ForeignKey(model=User) 

forms.py:

class EventoForm(forms.ModelForm): 
    class Meta: 
     model = Evento 

和通用視圖更新視圖的子類。我想限制對那個Evento實例中指定的用戶的訪問。最好的方法在哪裏?

回答

3

調用調度後,無論用戶是否有權限,都會保存所有數據。在調用派送之前,您必須檢查許可。看看這個片段http://djangosnippets.org/snippets/2426/。但更好的方法重新定義get_object方法:

def get_object(self, *args, **kwargs): 
    obj = super(EditarEvento, self).get_object(*args, **kwargs) 
    if obj.user != self.request.user: 
     raise PermissionDenied() #or Http404 
    return obj