Samir Tendulkar
Samir Tendulkar

Reputation: 1191

GeoDjango. Admin not showing map location for point = models.PointField() in created instances

I am trying to create member instances in a very simple way to practice GeoDjango. I am able to create the instances but they are not showing correctly in the admin map (See images Below)

below are my 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

below is my 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')

The model and views are successfully creating the model instance on my admin.py below is the code for admin.py

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

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

The point on Admin of my GeoDjango Project See Below enter image description here The place where the point actually is on the internet( Notice same lat, lon See Below) enter image description here

How can I fix this

Upvotes: 2

Views: 2594

Answers (1)

Samir Tendulkar
Samir Tendulkar

Reputation: 1191

Changed this

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

to

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

The lon comes before lat.

Upvotes: 4

Related Questions