хорошо, здесь сделка
сериализатор:
from rest_framework import serializers
from happytourist.models import PointsInterestData
class PointsInterestSerializer(serializers.ModelSerializer, serializers.Serializer):
distance = serializers.SerializerMethodField(default=None)
def get_distance(self, obj):
distance_view = self.context.get('distance')
return distance_view
class Meta:
model = PointsInterestData
fields = ('name', 'latitude', 'longtitude', 'distance')
read_only_fields = fields
мой взгляд:
from rest_framework import generics
from .serializers import PointsInterestSerializer
from happytourist.models import PointsInterestData
class PointsInterestList(generics.ListCreateAPIView, generics.ListAPIView):
serializer_class = PointsInterestSerializer
def get_queryset(self):
queryset = PointsInterestData.objects.all()
return queryset
def post(self, request, *args, **kwargs):
user_latitude = request.POST.get('latitude')
user_longtitude = request.POST.get('longtitude')
radius = request.POST.get('radius')
usergeodata = {'user_latitude': user_latitude, 'user_longtitude': user_longtitude, 'radius': radius}
return usergeodata
def get_coordinates(self):
latitude = PointsInterestData.objects.model.latitude
longtitude = PointsInterestData.objects.model.longtitude
geodata = {"latitude": latitude, "longtitude": longtitude}
return geodata
def distancecalc(self, request):
user_latitude = self.post(request=self.request)['user_latitude']
user_longtitude = self.post(request=self.request)['user_longtitude']
latitude = self.get_coordinates()['latitude']
longtitude = self.get_coordinates()['latitude']
x = longtitude - user_longtitude
y = latitude - user_latitude
distance = int((x ** 2 + y ** 2) ** (1 / 2))
return distance
def get_serializer_context(self):
distance_result = PointsInterestList.distancecalc(self, request=self.request)
context = super(PointsInterestList, self).get_serializer_context()
context.update({'distance': distance_result})
return context
Что мне нужно сделать, это получить широту и долготу, получить широту и долготу от модели, рассчитать расстояние между ними.Моя проблема - преобразовать расстояние в новое значение.В представлении у меня есть сообщение, где я публикую эти два значения.В получить координаты я получаю два значения из модели.В distancecalc я хочу рассчитать.