将选择字段作为电子邮件主题发送

时间:2012-11-30 18:09:42

标签: django django-forms

我在forms.py中有一个像这样的选择字段:

ASSUNTO = ( ('1', u'Informações'), 
        ('2', 'Comercial'), 
        ('3', 'Financeiro'), 
        ('4', 'Outro'))

在我的views.py中,当我从选择字段中将所选值作为电子邮件主题发送时,它就像:

在我的html页面中选择我的表单中的“ Comercial

通过以下主题收到的电子邮件:' 2 - MY COMPANY '

我的views.py中的代码:

from django.shortcuts import render
from forms import FormContato
from django.core.mail import send_mail


def HomeContato(request):
    form = FormContato()
    if request.method == 'POST':
        form = FormContato(request.POST)
        if form.is_valid():
            send_mail( form.cleaned_data['assunto'] + ' - MY COMPANY', 'Nome: ' + form.data['nome'] + ' ' + form.data['sobrenome'] + ' :: ' + 'E-mail: ' + form.data['email'] + ' :: ' + 'Mensagem: ' + form.data['menssagem'], 'noreply@email.com.br', ['email@gmail.com'], fail_silently=False)
            return render(request, 'contato/contato.html', locals())
        else:
            return render(request, 'contato/contato.html', locals())
    else:
        return render(request, 'contato/contato.html', locals())

如何使用此命令获取主题:'Comercial - MY COMPANY'?

提前感谢所有人!

2 个答案:

答案 0 :(得分:2)

这不是很漂亮,但以下应该这样做:

{choice[0]:choice[1] for choice in form.fields['assunto'].choices}[form.cleaned_data['assunto']]

注意:在阅读完其他答案后,你可以dict(form.fields['assunto'].choices)[form.cleaned_data['assunto']] - 我没想到使用内置函数而不是理解

另外你得到“2”的原因是选择元组是值的元组=>标签元组。

如果你想让这个值不是一个无意义的整数,那就像这样:

ASSUNTO = ( (u'Informações', u'Informações'), 
    ('Comercial', 'Comercial'), 
    ('Financeiro', 'Financeiro'), 
    ('Outro', 'Outro'))

然后保持您的视图与目前的视图相同

答案 1 :(得分:1)

使用:

dict(ASSUNTO)[form.cleaned_data['assunto']] + ...