Django / Python dict值将每个字母作为项返回

时间:2017-12-05 15:15:39

标签: python django dictionary

我遇到了一个我无法解决的问题。我有一本字典,我从django形式的选择中获得:

forms.py

 class testForm(forms.Form):
     TEST_CHOICES = (
         ("1", "One"),
         ("2", "Two"),
         ("3", "Three"),
     )

     test_choice_field = forms.MultipleChoiceField(choices=TEST_CHOICES, widget=forms.CheckboxSelectMultiple)

在我的views.py中,我遍历那个选择词,并试着用这样的字符串返回这些选择:"一个/两个/三个"

 def test_func(request):
     if request.method == 'POST':
         form = testForm(request.POST)
         if form.is_valid():
             test_choice_field = form.cleaned_data["test_choice_field"]
             empty_string = ""
             for numbers in test_choice_field:
                 empty_string += dict(form.fields['test_choice_field'].choices)[numbers]
             subject = "[{}] is the Number you are looking for.".format(empty_string)

我希望的是我的主题"保存字符串"一个/两个是您要查找的数字",具体取决于用户选中的复选框。因此,如果他/她选择了所有三个复选框,他会得到:"一个/两个/三个是您正在寻找的数字"如果它只有一个"那么你需要的数字是#34;等

现在我只是想做一个" /" .join(empty_string),但最终得到了这个" O / n / e / T / w / o是...."

我做错了什么?请不要删除" /" .join(),我知道我可以用format()做一些事情,但我特别想找到一个使用.join()的解决方案:)

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

尝试进行以下更改

l = []
for numbers in test_choice_field:
    l.append(dict(form.fields['test_choice_field'].choices)[numbers])
subject = "[{}] is the Number you are looking for.".format('/'.join(l))

您的解决方案的问题在于您尝试在字符串上调用joinjoin使用可迭代的字符串并使用连接符加入它。如果你传递一个字符串,我认为它是一个可迭代的,并用连接符字符连接字符串中的每个字符。

在您的情况下,它必须是list字符串。