私はdjangoフォームで動的なドロップダウンオプションリストを作成しようとしていますが、最初の辞書 'key'で表示できません。
フォームの選択辞書には、「名前」と「電子メール」という2つのキーが含まれています。また、 'name'の代わりに2番目のキー( 'email')でオプションを表示しています。コードの良いところは、それが動作することである最初の 'key'でDjangoフォームにドロップダウンを表示
def print(request):
if request.method == 'POST':
form = PrintForm(data=request.POST, request = request)
if form.is_valid():
contact_name = request.POST.get(
'contact_name'
, '')
contact_email = request.POST.get(
'contact_email'
, '')
form_content = request.POST.get('content', '')
supervisor = form.cleaned_data['supervisor']
supervisor = dict(form.fields['supervisor'].choices)[supervisor]
# Email the profile with the
# contact information
template = get_template('threeD/email/contact_template_for_printing.txt')
context = Context({
'contact_name': contact_name,
'supervisor': supervisor,
'contact_email': contact_email,
'form_content': form_content,
})
content = template.render(context)
email = EmailMessage(
"New message from " + contact_name,
content,
"Message - " + supervisor + ' ',
[supervisor],
headers={'Reply-To': contact_email}
)
email.send()
messages.success(request, "Thank you for your message.")
return redirect('/index/print/')
else:
form = PrintForm(request=request)
context_dict = {}
context_dict['printers'] = Printer.objects.all()
context_dict['form'] = form
return render(request, 'threeD/print.html', context_dict)
:
class Supervisors(models.Model):
name = models.CharField(max_length=200)
email = models.EmailField(max_length=100)
マイ形式:
supervisors = []
all_supervisors = Supervisors.objects.all()
for user in all_supervisors:
one_supervisor = {user.name.__str__() : user.name, user.email.__str__() : user.email}
supervisors.append(one_supervisor)
class PrintForm(forms.Form):
contact_name = forms.CharField(required=True)
contact_email = forms.EmailField(required=True)
supervisor = forms.ChoiceField(choices=supervisors)
content = forms.CharField(
required=True,
widget=forms.Textarea
)
そして、私のビューここ
は、私が何を意味するか
私のモデルであり、私が思うように電子メールを送信しますが、私の問題はドロップダウンリストを名前で表示する必要があることですが、代わりに電子メール。それが何をするかだ
:/
ありがとう、Alix!出来た! –
あなたを助けてうれしい!。あなたが答えを投票した方が良いです:) @IljaLeiko – alix
申し訳ありません、私はコミュニティで新しいです:D完了。 –