5

我有这样的架构:

模型.py:

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

表格.py:

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

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

4

1 回答 1

6

调用 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
于 2013-03-15T07:08:48.737 回答