我正在创建一个表单,允许用户向多人(学生)发送电子邮件。
我已经使用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'])
或者有更好的方式吗?
任何建议都将受到赞赏。
由于
答案 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
。