我试图将模板中的复选框选项传递给电子邮件功能的视图。模板中的每个复选框对应于数据库中的类别。
联系人数据库是这样的:
NAME | CATEGORY | EMAIL
john | man | john@example.com
sue | woman | bob@example.com
spot | dog | dog@example.com
我想根据类别向联系人发送电子邮件。表单看起来有点像这样:
Target Audience: men[] women[] dogs[]
Subject:
Message:
通过选中一个或多个复选框来选择目标受众,然后将此选择列表传递给视图,我可以将其作为收件人列表通过电子邮件功能传递。我在这里错过了什么一步?
我有一张下面的表格,我认为可能会有效,但此时我的精神已经筋疲力尽。
class EmailForm(forms.Form):
CATEGORY_CHOICES = (
...
)
subject = forms.CharField(required=True)
message = forms.CharField(required=True)
from_email = forms.CharField()
targetAudience = forms.MultipleChoiceField(choices=CATEGORY_CHOICES,
widget=widgets.CheckboxSelectMultiple())
最终我需要使用复选框在视图中定义TargetAudience
,并执行以下操作。
group = contact.objects.get(category==TargetAudience)
list = group.objects.values_list('email')
`send_mail`(mass mailing up to a few hundred) to this list.
编辑:视图放在一起
def email_test(request):
if request.method == 'GET':
form = EmailForm()
else:
form = EmailForm(request.POST)
if form.is_valid():
subject = form.cleaned_data['subject']
message = form.cleaned_data['message']
from_email = form.cleaned_data['from_email']
targetaudience = form.cleaned_data['targetAudience']
target_audience = contacts.objects.get(category=targetaudience)
email_list = target_audience.objects.values_list('email', flat=True)
send_mail(subject, message, from_email, email_list)
答案 0 :(得分:0)
假设form.cleaned_data['targetAudience']
返回类别列表,您可以执行以下操作:
email_list = Contact.objects.filter(category__in=targetaudience).values_list('email', flat=True)