2013-06-03 6 views
2

장고 코드에서 사용자가 현재 모델을 저장하고 있는지 확인하려면 어떻게합니까?장고 : 누가 프로그램에서 모델을 저장하고 있는지 확인하는 방법?

나는 유효성 검사 오류를 던지거나 그를 통해 일부 권한을 부여해야합니다.

+0

[django-audit-log] (https://github.com/Atomidata/django-audit-log/blob/master/audit_log/middleware.py) 사전 저장 신호를 통해 현재 사용자를 설정합니다. 아마도 그것은 당신을위한 해결책입니다. – danihp

답변

2

당신이보기 기능에서 model.save()을 실행 가정하면, request.user로 현재 사용자를 얻을 수 있습니다.

from django.contrib.auth.models import Permission 

def myview(request): 
    model = Model(...) 
    model.save() 
    permission = Permission.objects.get(codename="...") 
    request.user.user_permissions.add(permission) 

편집 :

def myview(request): 
    ... 
    form = SomeForm(...) 
    form.request = request 
: 형태로 양식 유효성 검사 코드의 요청에 얻을

가장 간단한 방법은 요청에 액세스 양식 인스턴스의 속성을 설정하는 아마

class SomeForm(...): 
    def clean_somefield(self): 
     data = self.cleaned_data["somefield"] 
     if self.request.user....: 
      raise ValidationError() 
: 양식 유효성 검사 논리 내부

이제 사용자가 액세스 할 수 self.request을 사용할 수 있습니다

+0

감사! 하지만 여기에 ValidationError를 던지려면 어떻게해야합니까? 그것은 그 자체로 형태 자체에 오류를주지 않을 것입니까? 500 개의 내부 서버 페이지가 에코됩니다. 나는 그것이 양식 수준에 있기를 원합니다. 어쨌든 양식 레벨에서 사용자를 얻을 수 있습니까? .'model_save'는 나를위한 선택이 아닙니다 –

+1

일부 (테스트되지 않은) 예제 코드로 답변을 업데이트했습니다. – codeape

+1

고마워요! 나를 위해 작동 :) –