2012-08-16 15 views
7

मैं किसी वेबसाइट के लिए फॉर्म बनाने के लिए मॉडलफॉर्म का उपयोग कर रहा हूं, लेकिन मुझे चयन बॉक्स में कौन सा टेक्स्ट प्रदर्शित होता है, इसके बारे में अधिक नियंत्रण चाहिए।Django के लिए लेबल फ़ील्ड का चयन करें

एक उदाहरण मॉडल इस

class Test(models.Model) 
    ID = IntegerField() 
    Label = CharacterField() 
    recipient = ForeignKey(Person) 
    product = ForeignKey(Product) 

तो, मेरी समस्या है, कि जब मैं इस मॉडल का एक modelForm बनाने, विदेशी कुंजी क्षेत्रों का चयन क्षेत्रों में किया जाता है, की प्राथमिक कुंजी है कि दिखाई दे सकता है अंतर्निहित मूल्य में वस्तु, और प्रदर्शित पाठ __unicode__() विधि से पाठ है। इस मामले में, केवल उत्पाद आईडी प्रदर्शित होती है (यह एक धारावाहिक कोड संख्या है, जो उपयोगकर्ता को कोई समझ नहीं आता है)। मैं "[धारावाहिक], [उत्पाद नाम]" जैसे कस्टम लेबल बनाने में सक्षम होना चाहता हूं।

मुझे आधिकारिक Django दस्तावेज़ीकरण पर कोई संकेत नहीं मिल रहा है, तो मुझे आश्चर्य हुआ कि अगर कोई मदद करेगा? :)

+0

नहीं आप 'मॉडल क्या उम्मीद को दिखाने के लिए की __unicode__' विधि बदल सकते हैं? – Rohan

+0

यह स्पष्ट समाधान होगा, लेकिन यूनिकोड विधि पूरी तरह से वेबसाइट पर उपयोग की जाती है, जहां केवल सीरियल दिखाने के लिए यह महत्वपूर्ण है। तो यह एक विकल्प नहीं है, मुझे डर है – Eldamir

उत्तर

7

Django docs regarding the ModelChoiceField देखें। उद्धरण:

मॉडल की __unicode__ विधि स्ट्रिंग क्षेत्र की पसंद में उपयोग के लिए वस्तुओं की अभ्यावेदन उत्पन्न करने के लिए कहा जाएगा; अनुकूलित प्रतिनिधित्व प्रदान करता है, उपclass ModelChoiceField और लेबल_from_instance ओवरराइड करें। इस विधि को मॉडल ऑब्जेक्ट, प्राप्त होगा और इसे प्रस्तुत करने के लिए उपयुक्त एक स्ट्रिंग वापस करनी चाहिए। उदाहरण के लिए:

class MyModelChoiceField(ModelChoiceField): 
    def label_from_instance(self, obj): 
     return "My Object #%i" % obj.id 
+0

ऐसा कुछ ऐसा लगता है, जो काम कर सकता है। मैं इसे – Eldamir

+0

देखता हूं यह शानदार ढंग से काम करता है। धन्यवाद दोस्त – Eldamir

संबंधित मुद्दे