2012-08-13 81 views
6

में फ़ील्ड मान प्रदर्शन को ओवरराइड करने के लिए मैं Django व्यवस्थापक में किसी फ़ील्ड के लिए प्रदर्शित मान को ओवरराइड करना चाहता हूं। फ़ील्ड में एक्सएमएल है और इसे व्यवस्थापक में देखते समय मैं इसे आसानी से पठनीयता के लिए सुंदर प्रारूप बनाना चाहता हूं। मुझे पता है कि मैदान के पढ़ने और लिखने पर सुधार करने के लिए कैसे, लेकिन यह वह नहीं है जो मैं करना चाहता हूं। मैं चाहता हूं कि एक्सएमएल व्हाइटस्पेस से छीन लिया गया हो और मैं केवल व्यवस्थापक परिवर्तन फ़ॉर्म में देखे जाने पर इसे दोबारा सुधारना चाहता हूं।Django व्यवस्थापक परिवर्तन फ़ॉर्म

तो मेरा सवाल यह है कि, मैं इस क्षेत्र के लिए व्यवस्थापक परिवर्तन फ़ॉर्म के टेक्स्टरेरा में प्रदर्शित मूल्य को कैसे नियंत्रित कर सकता हूं?

+0

हैं तो आप सिर्फ बारे में बात कर रिक्ति और इंडेंटेशन, या वास्तव में रंग, आकार इत्यादि जैसी शैलियों को बदलना? उत्तरार्द्ध संभव नहीं है। –

+0

यह वह पूर्व है जिसमें मुझे रूचि है। मैं सिर्फ टेक्स्टरेरा में प्रदर्शित मूल्य को एक अलग मूल्य से बदलना चाहता हूं। – gbutler

उत्तर

13
class MyModelForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(MyModelForm, self).__init__(*args, **kwargs) 
     self.initial['some_field'] = some_encoding_method(self.instance.some_field) 

class MyModelAdmin(admin.ModelAdmin): 
    form = MyModelForm 
    ... 

कहाँ, some_encoding_method कुछ आप रिक्ति/खरोज या आप पर उधार ले रहे कुछ अन्य 3 पार्टी कार्यक्षमता निर्धारित करने के लिए सेट अप किया है किया जाएगा। हालांकि, अगर आप अपनी खुद की विधि लिखते हैं, यह बेहतर होगा मॉडल, जो अपने आप पर डाल दिया, और फिर उदाहरण के माध्यम से इसे कहते हैं:

class MyModel(models.Model): 
    ... 
    def encode_some_field(self): 
     # do something with self.some_field 
     return encoded_some_field 

तब:

self.instance.encode_some_field() 
+1

यह चाल है। धन्यवाद! – gbutler