我遇到了一个我无法解决的问题。我有一本字典,我从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()的解决方案:)
感谢您的帮助!
答案 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))
您的解决方案的问题在于您尝试在字符串上调用join
。
join
使用可迭代的字符串并使用连接符加入它。如果你传递一个字符串,我认为它是一个可迭代的,并用连接符字符连接字符串中的每个字符。
在您的情况下,它必须是list
字符串。