2010-08-20 4 views
11

장고에서 선택 필드를 설정하려고합니다. 그러나 장고 문제라고 생각하지 않습니다. 선택 필드는이 필드에 대한 선택 사항으로서 2- 튜플의 반복 가능한 (예를 들어,리스트 또는 터플) 것을 취한다. 마지막 줄이 항상 강조파이썬 : 'str'과 'long'객체를 연결할 수 없습니다.

TypeError - cannot concatenate 'str' and 'long' objects 

: 난 항상 다음과 같은 오류가, 어떤 이유로

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")]) 

:

여기 내 코드입니다.

아무 것도 연결하려고하지 않습니다. 거의 '선택'매개 변수에 대한 목록을 변경하는 것에 관계없이이 오류가 발생합니다.

무슨 일 이니?

+0

오류가있는 전체 줄 문장을 가리키고 있기 때문에 "마지막 줄이 강조 표시되어 있습니다"라는 것을 유의하십시오. –

+0

모두에게 감사드립니다. 그것을 해결했습니다. – Roger

답변

28

문장이 여러 줄로 나뉘어져 있기 때문에 마지막 줄만 강조 표시됩니다.

실제 문제에 대한 수정 프로그램은 대부분,

self.fields['question_' + str(question.id)] 

빠르게 파이썬 인터프리터에서 테스트 할 수 있습니다으로

self.fields['question_' + question.id] 

을 변경 함께 아무튼 문자열과 숫자를 추가 할 예정 작동하지 않음 :

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

아마도 은 정수입니다. 시도해보십시오

self.fields['question_' + str(question.id)] = ... 

대신에보십시오.

5

'question_'은 문자열이고 question.id은 길다. 서로 다른 유형의 두 가지를 연결할 수 없으므로 str(question.id)을 사용하여 long을 문자열로 변환해야합니다.

0
self.fields['question_' + question.id] 

그 것처럼 보입니다.

"question_%f"%question.id 

또는

"question_"+ str(question.id) 
-2

이 한 줄에 너무 많은 일을에 문제가 시도 - 오류 메시지가 약간 덜 도움이된다. 아래 내용대로 문제를 작성했다면 문제가 훨씬 쉽게 발견 될 것입니다.

question_id = 'question_' + question.id 
self.fields[question_id] = forms.ChoiceField(
       label=question.label, 
       help_text=question.description, 
       required=question.answer_set.required, 
       choices=[("fe", "a feat"), ("faaa", "sfwerwer")]) 
관련 문제