Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 向序列化程序中添加一个额外字段,而不在模型中_Python_Django_Django Rest Framework - Fatal编程技术网

Python 向序列化程序中添加一个额外字段,而不在模型中

Python 向序列化程序中添加一个额外字段,而不在模型中,python,django,django-rest-framework,Python,Django,Django Rest Framework,我一直在尝试将字段“距离”添加到结果中包含的字段中。但是,这个字段不在模型或序列化程序中,我只是想知道返回这样一个字段的最佳方式是什么?非常感谢您的帮助。谢谢 意见是: class PlaceViewSet(viewsets.ModelViewSet): """ API endpoint that allows places to be viewed or edited. """ current_lat = 54.52984 current_lon =

我一直在尝试将字段“距离”添加到结果中包含的字段中。但是,这个字段不在模型或序列化程序中,我只是想知道返回这样一个字段的最佳方式是什么?非常感谢您的帮助。谢谢

意见是:

class PlaceViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows places to be viewed or edited.
    """

    current_lat = 54.52984
    current_lon = -1.5609

    """
    Haversine formula used to sort places by distance (closest first).
    """
    query = "select distinct id, (((acos(sin((" + format(current_lat) + \
            "*pi()/180)) * sin((lat*pi()/180))+cos((" + format(current_lat) + \
            "*pi()/180)) * cos((lat*pi()/180)) * cos(((" + format(current_lon) + \
            " - lon)*pi()/180))))*180/pi())*60*1.1515) AS distance " \
            "from mobileapi_place " \
            "order by distance asc"

    queryset = Place.objects.raw(query)
    serializer_class = PlaceSerializer
下面是序列化程序

class PlaceSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Place
        fields = ('title', 'lat', 'lon', 'featured_image_url', 'created_at')
你试过了吗

应该是这样的

class PlaceSerializer(serializers.HyperlinkedModelSerializer):
    distance = SerializerMethodField()

    class Meta:
        model = Place
        fields = ('title', 'lat', 'lon', 'distance', 'featured_image_url', 'created_at')

    def get_distance(self, obj):
        return obj.distance
你试过了吗

应该是这样的

class PlaceSerializer(serializers.HyperlinkedModelSerializer):
    distance = SerializerMethodField()

    class Meta:
        model = Place
        fields = ('title', 'lat', 'lon', 'distance', 'featured_image_url', 'created_at')

    def get_distance(self, obj):
        return obj.distance