代码之家  ›  专栏  ›  技术社区  ›  Samir Tendulkar

吉德扬戈。管理员未在创建的实例中显示point=models.PointField()的映射位置

  •  1
  • Samir Tendulkar  · 技术社区  · 7 年前

    我试图用一种非常简单的方式创建成员实例来实践GeoDjango。我可以创建实例,但它们在管理映射中没有正确显示 (见下图)

    模型.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
    

    下面是我的 视图.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')
    

    管理.py

    from django.contrib.gis import admin
    from .models import Member
    
    admin.site.register(Member, admin.OSMGeoAdmin)
    

    我的GeoDjango项目的管理要点如下 enter image description here 该点实际位于internet上的位置(请注意相同的纬度,lon请参见下文) enter image description here

    1 回复  |  直到 7 年前
        1
  •  2
  •   Samir Tendulkar    7 年前

    改变了这个

    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)