2013-02-08 15 views
11

Db'de zaten var olan veriler bir yönetici formunda gömülü bir harita görüntülemek istiyorum.Django ModelAdmin alan kümelerinde model yöntemini nasıl ararım?

models.py Bu işe yaramazsa

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

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: Aşağıdaki kodu var.

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

Ben, 'fieldsets' için 'açıklaması' seçeneğini kullandığını çalıştığımız bir başka şey ise 'address_2_html' AddressAdmin kapsamında erişilebilir değil: bir hata alıyorum. Serin ancak yeterince soğuk olmayan 'description' kullanarak statik bir harita yerleştirmeyi başardım. (Bellekten) Bunun gibi

cevap

22

: yöntem modeli nesne Adresine erişim sağlar() get_fieldsets beri() get_fieldsets geçersiz kılarak çözüldü

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

bu çözüm ile, aşağıdaki hata: 'AddressAdmin.fieldsets [0] [1] [' alanlar '] formundan eksik 'address_2_html' alana değinmektedir. –

+1

'display_map3', örneğinizdeki 'address_2_html' öğesine eşdeğer ise, örneğimde 'readonly_fields' gibi 'display_map3' yazdınız mı? – Etienne

+0

Bu çözüm, 'list_display' için değil, 'fieldsets' için çalışıyor. –

1

Sorun.

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 
İlgili konular