我想在django admin中添加一个备用列表视图,我可以在其中查看地图上的所有实例(一次)。
我知道如何让积分显示在地图上(我已经在网站的非管理员部分进行了操作)。但是,我是否可以将其添加到管理系统中?
答案 0 :(得分:0)
可能这不是最好的解决方案,我没有找到管理员为我做的方式,所以我手动完成,这就是我所做的:
覆盖更改列表视图,以便在管理视图中注入要显示的数据,如:
class MyAdmin(admin.ModelAdmin):
def changelist_view(self, request, extra_context=None):
extra_context = extra_context or {}
extra_context['mypoints'] = MyPoint.objects.all()
return super(MyAdmin,
self).changelist_view(request,
extra_context=extra_context)
然后,在/templates/admin/my_app/change_list.html
中创建模板,覆盖并扩展基础change_list.html,添加典型的Google地图:
{% extends "admin/change_list.html" %}
{% block content %}
{% load staticfiles %}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<script>
function initialize() {
//Typical map initialization here
{% for point in mypoints %}
var c = new google.maps.Circle({
//circle config
map: map,
center: {lat: {{point.0 |stringformat:".3f" }}, lng: {{point.1|stringformat:".3f" }}},
radius: 0.1
});
{% endfor %}
}
</script>
{{block.super}} {% endblock %}
请注意保留块的其余功能的{{block.super}}。此外,我有一些lat-long的麻烦,并且不得不改变point.1与point.0以实现正确的表示,不知道它是否是geodjango和google地图的默认系统之间的不同约定