【问题标题】:GeoDjango. Admin not showing map location for point = models.PointField() in created instances地理Django。管理员未在创建的实例中显示 point = models.PointField() 的地图位置
【发布时间】:2018-08-18 10:40:14
【问题描述】:

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

以下是我的 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')

模型和视图在我的 admin.py 上成功创建模型实例 下面是 admin.py

的代码
from django.contrib.gis import admin
from .models import Member

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

关于我的 GeoDjango 项目管理员的要点见下文 该点实际在互联网上的位置(注意相同的纬度,经度见下文)

我该如何解决这个问题

【问题讨论】:

    标签: python django gis postgis geodjango


    【解决方案1】:

    改了

    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 之前。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-19
      相关资源
      最近更新 更多