Я пытаюсь передать выбор флажка из шаблона в представление для функции электронной почты. Каждый флажок в шаблоне соответствует категории в базе данных.
База контактов выглядит так:
NAME | CATEGORY | EMAIL
john | man | [email protected]
sue | woman | [email protected]
spot | dog | [email protected]
Я хочу отправлять контакты по электронной почте на основе категории. Форма будет выглядеть примерно так:
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)
values_list
предоставит вам список кортежей по умолчанию, передайтеflat=True
в качестве аргумента ключевого слова вvalues_list
, если вам нужен только список адресов электронной почты. - person GwynBleidD   schedule 27.10.2015