장고 코드에서 사용자가 현재 모델을 저장하고 있는지 확인하려면 어떻게합니까?장고 : 누가 프로그램에서 모델을 저장하고 있는지 확인하는 방법?
나는 유효성 검사 오류를 던지거나 그를 통해 일부 권한을 부여해야합니다.
장고 코드에서 사용자가 현재 모델을 저장하고 있는지 확인하려면 어떻게합니까?장고 : 누가 프로그램에서 모델을 저장하고 있는지 확인하는 방법?
나는 유효성 검사 오류를 던지거나 그를 통해 일부 권한을 부여해야합니다.
당신이보기 기능에서 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
을 사용할 수 있습니다
감사! 하지만 여기에 ValidationError를 던지려면 어떻게해야합니까? 그것은 그 자체로 형태 자체에 오류를주지 않을 것입니까? 500 개의 내부 서버 페이지가 에코됩니다. 나는 그것이 양식 수준에 있기를 원합니다. 어쨌든 양식 레벨에서 사용자를 얻을 수 있습니까? .'model_save'는 나를위한 선택이 아닙니다 –
일부 (테스트되지 않은) 예제 코드로 답변을 업데이트했습니다. – codeape
고마워요! 나를 위해 작동 :) –
[django-audit-log] (https://github.com/Atomidata/django-audit-log/blob/master/audit_log/middleware.py) 사전 저장 신호를 통해 현재 사용자를 설정합니다. 아마도 그것은 당신을위한 해결책입니다. – danihp