Как изменить параметр в сериализаторе через view в django rest api - PullRequest
0 голосов
/ 26 августа 2018

хорошо, здесь сделка

сериализатор:

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 я хочу рассчитать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...