1

私の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」として取得するこのコマンドを使用するにはどうすればよいですか?

よろしくお願いします!

4

2 に答える 2

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'))

そして、現在と同じビューを維持します

于 2012-11-30T18:25:17.450 に答える
1

使用する:

dict(ASSUNTO)[form.cleaned_data['assunto']] + ...
于 2012-11-30T18:10:37.197 に答える