如何限制对UpdateView的某些用户的访问?

时间:2013-03-15 04:19:15

标签: python django django-class-based-views

我有这样的架构:

models.py:

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

forms.py:

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

和通用视图UpdateView的子类。我想将该视图的访问权限限制为该Evento实例中指定的用户。最佳方法在哪里?

1 个答案:

答案 0 :(得分:4)

调用dispatch后,无论用户是否拥有权限,都会保存所有数据。您必须在致电调度之前检查权限。看看这个片段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