2011-10-02 6 views
0

사용자가 여러 사람 (학생)에게 이메일을 보낼 수있는 양식을 만듭니다.Django - ModelMultipleChoiceField에서 postdata를 반복합니다.

각 사용자의 확인란을 만들기 위해 ModelMultipleChoiceField를 사용했지만 게시 된 데이터를 처리하는 방법을 모르겠습니다.

여기에 내 생각은 지금까지의 :

if request.method == 'POST':  
     subject = request.POST['subject']     
     message = request.POST['message'] 
     email = EmailMessage(subject, message, '[email protected]', 
       recipient_addresses) 

     email.send() 
else: 

    students = Student.objects.exclude(email='') 
    form = StudentListForm(students=students) 

양식 단지 선택받는 사람의 ID 번호를 게시합니다. 다음과 같은 학생 개체를 필터링해야합니까?

Student.objects.filter(pk__in=request.POST['students']) 

또는 '더 나은 방법'이 있습니까?

모든 조언을 주시면 감사하겠습니다.

감사

답변

1

당신은 검증 및 데이터 변환에 의존하는 양식을 사용하여뿐만 아니라 단순히 HTML의 필드를 보여주는 지점의 대부분을 놓치고있어.

if request.method == 'POST': 
    form = StudentListForm(data=request.POST) 
    if form.is_valid(): 
     subject = form.cleaned_data['subject'] 
     message = form.cleaned_data['message'] 
     recipients = form.cleaned_data['recipients'] 
     recipient_addresses = [r.email for r in recipients] 
     email = ... 

기본적으로, 당신은 항상 form.cleaned_data 대신 request.POST에 액세스해야합니다.