python - 地理 Django 。管理员未在创建的实例中显示 point = models.PointField() 的 map 位置

标签 python django gis postgis geodjango

我正在尝试以一种非常简单的方式创建成员实例来练习 GeoDjango。我能够创建实例,但它们在管理 map 中未正确显示(参见下图)

下面是我的models.py

from django.contrib.gis.db import models

    class Member(models.Model):
        name = models.CharField(max_length=150)
        image = models.ImageField()
        lat = models.FloatField()
        lon = models.FloatField()
        point = models.PointField()
        objects = models.GeoManager()

        def __str__(self):
            return self.name

下面是我的views.py

class MemberCreate(CreateView):
    model = Member
    fields = ('name', 'image', 'lat', 'lon')

    def form_valid(self, form, *args, **kwargs):
        self.object = form.save(commit=False)
        self.object.point = fromstr('POINT(%s %s)'%(self.object.lat, self.object.lon), srid=4326)
        self.object.save()
        return redirect('member:all_members')

模型和 View 在我的 admin.py 上成功创建模型实例,下面是 admin.py 的代码

from django.contrib.gis import admin
from .models import Member

admin.site.register(Member, admin.OSMGeoAdmin)

我的 GeoDjango 项目的管理要点见下文 enter image description here 该点实际在互联网上的位置(注意相同的经纬度,请参见下文) enter image description here

如何解决这个问题

最佳答案

改变了这个

self.object.point = fromstr('POINT(%s %s)'%(self.object.lat, self.object.lon), srid=4326)

self.object.point = fromstr('POINT(%s %s)'%(self.object.lon, self.object.lat), srid=4326)

lon 位于 lat 之前。

关于python - 地理 Django 。管理员未在创建的实例中显示 point = models.PointField() 的 map 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51907699/

相关文章:

geolocation - 跨多个多边形搜索点的最佳方法

mysql - 使用交叉联接和 Hversine 公式在 MySQL 地理搜索中删除重复记录

python - Pandas 根据所有现有列的值(第一列除外)创建新列

python - 使用 pyOpenGL 时没有名为 pydispatch 的模块

python - 如何计算以多列作为参数的 pandas 列?

python - 如何使用 Flask 在 PyCharm 中安装 Mysql-python 尤其是在 Windows 中

python - Django mptt数据库迁移报错

python - JSON 使用 Django 对类建模

python - Django:无法导入名称 check_password

r - 使用 R 中的 tmap 包生成插图