我有一个像这样的模型类
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 :(得分:0)
您必须编写自定义小部件。 请查看this,this和django documentation。 你可能需要写south introspection rules
答案 1 :(得分:0)
有一个django-easy-maps
模块可以完全满足您的需求(除了其他功能):
django-easy-maps提供了显示地图下的地图的基本小部件 地址字段。它可以在管理员中用于地图预览。
请注意,您无需更改模型并编写任何特定的迁移。它适用于开箱即用的CharField
或TextField
。
关注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)
答案 2 :(得分: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)