首页 > 解决方案 > 在 Django admin 上显示多个多边形

问题描述

我有一个带有gis_models.GeometryField.

class MyModel(django.db.models):
   area = gis_models.GeometryField(null=True, blank=True)

我在 Django admin 上显示这个模型,但我使用的是https://github.com/makinacorpus/django-leaflet库。

我的数据库中已经有 100 多行。当我打开任何这些条目的管理页面时,我可以看到正在绘制的多边形。那很完美!再举一个例子,我必须从管理页面添加一个新的多边形。我能够绘制地图并保存条目。它按预期工作。下次我在地图上打开该条目时,我可以在地图上看到多边形。

问题是当我添加一个新多边形时,我不知道数据库中已经存在哪些多边形。所以有时我会添加一个与现有多边形重叠的新多边形。我正在考虑在地图上显示所有可用的多边形,这样下次我添加一个新多边形时,我就不会触及地图上的这些点。我们如何只为 /add/ 页面显示所有多边形(MultiPolygon)?

PS:我找不到可以在 Django 管理类中覆盖以渲染所有多边形的方法。另外,我在 StackOverflow 或任何其他来源上找不到相关问题。因此,如果您认为我没有进行足够的搜索,请指出您认为对于此特定案例对我有帮助的链接。

标签: djangodjango-admindjango-leaflet

解决方案


1.使用空间数据库(我推荐带有PostGIS扩展的Postgres)

https://www.enterprisedb.com/postgres-tutorials/how-use-postgresql-django

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'polygon',
        'USER':'postgres',
        'PASSWORD':'*******',
        'HOST':'localhost',
        'PORT':'5432',
    } }

2.在settings.py中将django.contrib.gis添加到你安装的应用程序中

INSTALLED_APPS = [
    .......
    'django.contrib.gis',
    .....
]
  1. 创建模型

    #models.py

     from django.contrib.gis.db import models
    
    
     class Polygon(models.Model):
          area=models.MultiPolygonField(srid=4326)
    

推荐阅读