Reputation: 1191
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
The place where the point actually is on the internet( Notice same lat, lon See Below)
How can I fix this
Upvotes: 2
Views: 2594
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