2014-06-07 87 views
1

增加额外的HTML我有一个模型类这样Django的 - 在管理

models.py

class Places(models.Model): 
    name = models.CharField(max_length=50) 
    address = models.CharField(max_length=50) 
    tel = models.CharField(max_length=50) 

我想提出一个谷歌地图的地址栏下,并有下一个自定义按钮到地址字段。该按钮用于在用户点击地址时根据地址输入指定位置。

所以,我的问题是如何将地址字段和html标记旁边的按钮插入地图渲染?

谢谢。

+0

你想在添加此按钮Django管理员?你想覆盖django的管理员添加/编辑页面吗? – AlvaroAV

回答

0

有一个django-easy-maps模块,可以做你需要的东西(除了其他功能):

Django的易图规定,被显示在地图的基本部件地址字段为 。它可以用于管理地图预览。

请注意,您不需要更改模型并编写任何特定的迁移。它适用于开箱即用的CharFieldTextField

按照installation instructions和以下内容添加到您的应用程序的admin.py

from django import forms 
from django.contrib import admin 
from easy_maps.widgets import AddressWithMapWidget 
from my_app.models import Places 

class PlacesAdmin(admin.ModelAdmin): 
    class form(forms.ModelForm): 
     class Meta: 
      widgets = { 
       'address': AddressWithMapWidget({'class': 'vTextField'}) 
      } 

admin.site.register(Places, PlacesAdmin) 
0

我结束了参考这个tutorial创建自定义窗口小部件。

对于任何人谁有兴趣,这里是我的代码

widgets.py

class AddressFieldWidget(forms.TextInput): 
    def render(self, name, value, attrs=None): 
     html = super(AddressFieldWidget, self).render(name, value, 
              attrs) 
     html = html + """ <input type="button" value="GeoCode" class="getgeo btn"><br><br><label>Map</label><div id="gmap">This is for map rendering</div>""" 
     return mark_safe(html) 

admin.py

def formfield_for_dbfield(self, db_field, **kwargs): 
     if db_field.name == 'address': 
      kwargs['widget'] = AddressFieldWidget 

     return super(AdminListing,self).formfield_for_dbfield(db_field,**kwargs)