django - 在 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 或任何其他来源上找不到相关问题。因此,如果您认为我没有进行足够的搜索,请指出您认为对于此特定案例对我有帮助的链接。
解决方案
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',
.....
]
创建模型
#models.py
from django.contrib.gis.db import models class Polygon(models.Model): area=models.MultiPolygonField(srid=4326)
推荐阅读
- excel - 更改作为表副本的表的名称
- c# - HttpClient 在重定向时传递 Location 等于 null(而相应的浏览器调用包含 URL)
- airflow - 气流调度程序不尊重 EndTime 与 datetime.now()+timedelta()
- spring-boot - Spring Data JPA 可以通过@JoinColumn 强制执行多对一关系吗
- css - 如何在自动完成字段中换行 - Primefaces 6.2.8
- xml - 如何使用 ejabberd(使用他们的 API 和/或使用 XML)获取私人房间列表?
- java - 如何使用 websocket 从 Java 后端向 Angular 前端发送消息?
- azure-devops - azure devops CI 构建中的“VsTest”任务问题
- javascript - 检查高度是否已从一定量改变
- excel - Excel:在特定术语后面的单元格中显示值