Django - 通过ModelMultipleChoiceField中的postdata迭代

时间:2011-10-02 16:16:48

标签: django django-models

我正在创建一个表单,允许用户向多人(学生)发送电子邮件。

我已经使用ModelMultipleChoiceField为每个用户创建了复选框,但是我不知道如何处理发布的数据。

到目前为止,这是我的观点:

if request.method == 'POST':    
        subject = request.POST['subject']                 
        message = request.POST['message'] 
        email = EmailMessage(subject, message, 'from@example.com',
                recipient_addresses)

        email.send()
else:

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

表单只发布所选收件人的ID号。我是否必须像这样过滤学生对象:

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

或者有更好的方式吗?

任何建议都将受到赞赏。

由于

1 个答案:

答案 0 :(得分: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