2013-02-16 39 views
5

Django डॉक्स state कहा जाता है कि आप व्यवस्थापक इंटरफ़ेस में रीडोनली फ़ील्ड के लिए कस्टम HTML आउटपुट कर सकते हैं। यह वही है जो मुझे चाहिए, लेकिन यह काम नहीं कर रहा है।Django व्यवस्थापक इंटरफ़ेस में फ़ील्ड के लिए रीडोनली विधि को कभी भी

admin.py में:

from django.contrib import admin 

class ExampleAdmin(admin.ModelAdmin): 
    readonly_fields = ('myfield',) 

    def myfield(self, instance): 
     print 'This part of the code is never reached!' 
     return u'<b>My custom html for the readonly field!</b>' 

    myfield.allow_tags = True 

admin.site.register(State, StateAdmin) 

models.py में:

class State(models.Model): 
    myfield = MyCustomField() 
    ... etc ... 

class MyCustomField(models.TextField): 
    def to_python(self, value): 
     ... etc ... 

क्षेत्र के रूप में केवल पढ़ने के लिए व्यवस्थापक संपादन पृष्ठ पर प्रदर्शित होता है। हालांकि, 'myfield' विधि जिसे कस्टम HTML बनाने के लिए माना जाता है उसे कभी नहीं कहा जाता है।

क्या कोई जानता है कि मैं क्या गलत कर रहा हूं?

सधन्यवाद,

पैट्रिक

उत्तर

11

को देखते हुए "Django/योगदान/व्यवस्थापक/util.py" फ़ाइल के lookup_field विधि, इस अपेक्षित व्यवहार प्रतीत होता है। यहाँ कोड का उपयोग कर रहे है:

readonly_fields = ('myfield',) 

myfield के बाद से, readonly_fields में यह होने ही यह भी संपादित कर देगा एक वास्तविक क्षेत्र अपने मॉडल में परिभाषित किया गया है; यह आपको उपयोगकर्ता को प्रदर्शित होने वाली चीज़ों को अनुकूलित करने की अनुमति नहीं देगा। ऐसा करने के लिए, आपको readonly_fields कुछ देना है जो वास्तविक क्षेत्र नहीं है, जैसे myfield_readonly। इसके बाद आपको ModelAdmin की myfield विधि का नाम myfield_readonly, साथ ही साथ myfield.allow_tags = True का नाम बदलना होगा। आप शायद myfield_readonly.short_description = 'My Field' जोड़ना चाहेंगे। अंत में, आप exclude या fields का उपयोग करके फ़ॉर्म के वास्तविक myfield फ़ील्ड को छोड़ना चाहेंगे।

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

  • कोई संबंधित समस्या नहीं^_^