I have an API using GeoDjango and PostGIS. Every time I try to add a post with a point it gets saved as another point around 10,000 times less than the values I entered for both latitude and longitude.
I am trying to use WSG84 everywhere and I do not have to make any transforms to another system.
The model I am trying to add to:
class Job(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
job_name = models.CharField(max_length=50)
created_by = models.ForeignKey(Company, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
description = models.CharField(max_length=1024)
haul_from = models.PointField(srid=4326)
haul_to = models.PointField(srid=4326, null=True, blank=True)
job_active = models.BooleanField(default=True)
The form:
class JobForm(ModelForm):
class Meta:
model = Job
fields = ('job_name', 'description', 'haul_from')
The serializer:
class JobSerializer(serializers.ModelSerializer):
created_by = UserSerializer(read_only=True)
class Meta:
model = Job
fields = ('id', 'job_name', 'created_by', 'created_at_formatted', 'description', 'haul_from', 'haul_to', 'job_active')
The api:
@api_view(['POST'])
def job_create(request):
form = JobForm(request.data)
print(request.data)
if (request.user.company is None):
return JsonResponse({'error': 'Please join or create a company'})
if form.is_valid():
job = form.save(commit=False)
job.created_by = request.user.company
job.save()
serializer = JobSerializer(job)
return JsonResponse(serializer.data, safe=False)
else:
return JsonResponse({'error': 'Something went wrong'})
If I input this into my post request:
Point(45.87159732871114 -66.5314351925612)
I receive this as what is saved into the database:
"SRID=4326;POINT (0.0004120715698736 -0.0005976620510765)"
I believe I have the PostGIS extension properly installed to my database, as well.