我有这样的架构:
模型.py:
class Evento(models.Model):
[...]
user = ForeignKey(model=User)
表单.py:
class EventoForm(forms.ModelForm):
class Meta:
model = Evento
和通用 View UpdateView 的子类。我想将对该 View 的访问限制为该 Evento 实例中指定的用户。最好的方法在哪里?
最佳答案
调用 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
关于python - 如何限制某些用户访问 UpdateView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15424658/