python:无法连接'str'和'long'对象

Rog*_*ger 17 python

我正在尝试在django中设置一个选择字段,但我不认为这是一个django问题.选择字段采用2元组的可迭代(例如,列表或元组)作为该字段的选择.

这是我的代码:

self.fields['question_' + question.id] = forms.ChoiceField(
                label=question.label,
                help_text=question.description,
                required=question.answer_set.required,
                choices=[("fe", "a feat"), ("faaa", "sfwerwer")])
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我总是得到以下错误:

TypeError - cannot concatenate 'str' and 'long' objects
Run Code Online (Sandbox Code Playgroud)

最后一行始终突出显示.

我不是想连接任何东西.几乎不管我将列表更改为'choices'参数,我都会收到此错误.

这是怎么回事?

Mar*_*off 34

很可能它只突出显示最后一行,因为您将语句拆分为多行.

实际问题的修复很可能会发生变化

self.fields['question_' + question.id]
Run Code Online (Sandbox Code Playgroud)

self.fields['question_' + str(question.id)]
Run Code Online (Sandbox Code Playgroud)

由于您可以在Python解释器中快速测试,因此在一起添加字符串和数字不起作用:

>>> 'hi' + 6

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    'hi' + 6
TypeError: cannot concatenate 'str' and 'int' objects
>>> 'hi' + str(6)
'hi6'
Run Code Online (Sandbox Code Playgroud)


Sjo*_*erd 6

'question_'是一个字符串,question.id是一个很长的.你不能连接两个不同类型的东西,你必须使用转换长到一个字符串str(question.id).