2013-03-15 3 views
3

는이 같은 스키마를 가지고 :특정 사용자에게 UpdateView에 대한 액세스를 제한하는 방법은 무엇입니까?

models.py :

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

forms.py :

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

및 일반보기 UpdateView의 서브 클래스입니다. 해당보기에 대한 액세스를 해당 Evento 인스턴스에 지정된 사용자로 제한하려고합니다. 그것의 최선의 접근법은 어디에 있습니까?

답변

3

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 
관련 문제