2010-08-20 15 views
11

मैं Django में एक विकल्प क्षेत्र स्थापित करने के लिए कोशिश कर रहा हूँ, लेकिन मुझे नहीं लगता कि यह एक Django मुद्दा है। विकल्प फ़ील्ड इस क्षेत्र के विकल्पों के रूप में उपयोग करने के लिए 2-टुपल्स का एक पुनरावृत्त (उदा।, एक सूची या टुपल) लेता है।अजगर: 'str' और 'लंबी' जोड़ नहीं कर सकते हैं वस्तुओं

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_' + question.id] 

परिवर्तित होगी

self.fields['question_' + str(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

शायद question.id एक पूर्णांक है।

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

इसके बजाय प्रयास करें।

5

'question_' एक स्ट्रिंग है, question.id एक लंबा है। आप विभिन्न प्रकार की दो चीजों को संयोजित नहीं कर सकते हैं, आपको str(question.id) का उपयोग करके लंबे समय तक एक स्ट्रिंग को परिवर्तित करना होगा।

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")]) 
संबंधित मुद्दे