Geodjango在地图上查看管理员列表视图

时间:2015-09-07 09:11:52

标签: django geodjango

我想在django admin中添加一个备用列表视图,我可以在其中查看地图上的所有实例(一次)。

我知道如何让积分显示在地图上(我已经在网站的非管理员部分进行了操作)。但是,我是否可以将其添加到管理系统中?

1 个答案:

答案 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地图的默认系统之间的不同约定