2009-09-01 7 views
0

양식에서 제외 한 user_id 필드가있는 modelform이 있습니다. 이 형식은 모델 형식으로 만들어집니다. 편집 할 수없는 값이기 때문에 제외 된 사용자 필드가있는 이유가 있습니다. 나는 그 값이 장난 꾸러기 사용자에 의해 조작 될 수있는 HTML 폼으로 가기를 원하지 않는다.양식 세트에 값 삽입

이 모델 formset을 저장하려고하면 user_id가 null 일 수 없다는 오류가 발생합니다. 보기에 해당 formset 저장하기 전에 각 양식에 request.user 추가하려면 someway 필요합니다. 어떻게해야합니까? 모델 폼의 단일 인스턴스에 값을 추가하는 방법을 알고 있지만 formset을 사용하여 값을 처리하는 방법을 알 수 없습니다.

답변

1

request.user를 form에 전달하지 않으면 양식의 save 메소드에서 직접 얻을 수있는 방법이 없습니다.

그러나 사용자가 컨텍스트 외부에서 양식의 저장 방법으로 직접 사용할 수있게하려면 방법이 있습니다. 체크 아웃 : http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser. 당신이 해당 formset의 remeber를 저장하는 경우

1

는 :

if formset.is_valid(): 
    instances = formset.save(commit=False) 
    for instance in instances: 
     instance.user_id = request.user.id 
     instance.save() 

당신은 더 아무것도 필요하지 않습니다. BTW 나는 왜 사용자 ID가 아닌 사용자 객체를 저장하는지 이해하지 못합니까?