2013-02-08 20 views
11

मैं डीबी में डेटा पहले से मौजूद होने पर एक व्यवस्थापक रूप पर एक एम्बेडेड मानचित्र प्रदर्शित करना चाहता हूं।मैं django ModelAdmin फ़ील्ड में मॉडल विधि कैसे कॉल करूं?

models.py

class Address(models.Model): 
    address = models.CharField() 

    def address_2_html(self): 
     if self.address: 
      # Return html for an embedded map using the entered address. 
      return embedded_map_html 
     else: 
      return '' 
    address_2_html.allow_tags = True 

admin.py

class AddressAdmin(admin.ModelAdmin): 
    fieldsets = [(label, {'fields': ['address','address_2_html']}),] 

यह काम नहीं करता: मैं निम्नलिखित कोड है।

'AddressAdmin.fieldsets[1][1]['fields']' refers to field 'address_2_html' that is missing from the form. 

एक और बात मैं 'fieldsets' के लिए 'विवरण' विकल्प का उपयोग किया गया था की कोशिश की, फिर भी, 'address_2_html' नहीं AddressAdmin के दायरे के भीतर पहुंचा जा सकता है: मैं कोई त्रुटि मिलती है। मैं 'विवरण' का उपयोग करके एक स्थिर मानचित्र को एम्बेड करने में सफल रहा जो कि ठंडा था लेकिन पर्याप्त ठंडा नहीं था।

उत्तर

22
कि (स्मृति से) की तरह

:

class AddressAdmin(admin.ModelAdmin): 
    fieldsets = [(label, {'fields': ['address','address_2_html']}),] 
    readonly_fields = ['address_2_html'] 

    def address_2_html(self, obj): 
     return obj.address_2_html() 
    address_2_html.allow_tags = True 
    address_2_html.short_description = 'Address display' 
+0

मैं इस समाधान के साथ निम्नलिखित त्रुटि मिलती है: 'AddressAdmin.fieldsets [0] [1] [' फ़ील्ड ']' 'address_2_html' उस रूप में नहीं है जिसकी प्रति फ़ील्ड को दर्शाता है। –

+1

यदि आपके उदाहरण में 'display_map3' आपके 'address_2_html' के बराबर है, तो क्या आपने 'readonly_fields' में' display_map3 'को मेरे उदाहरण में रखा है? – Etienne

+0

वह समाधान 'list_display' के लिए काम करता है लेकिन 'फ़ील्ड' नहीं। –

1

समस्या get_fieldsets() अधिभावी get_fieldsets के बाद से() विधि मॉडल वस्तु पता करने के लिए उपयोग की अनुमति देता द्वारा हल किया।

def get_fieldsets(self, request, obj=None): 
    fs = [ 
     (self.label, {'fields': ['address',]}), 
     ('Map', {'fields': [], # required by django admin 
       'description':obj.address_2_html(), 
     }), 
    ] 
    return fs 
संबंधित मुद्दे