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