gpt4 book ai didi

geodjango - 在 Django Rest Framework generics.ListAPIView 中动态添加字段

转载 作者:行者123 更新时间:2023-12-02 11:00:11 24 4
gpt4 key购买 nike

我有一个可以使用经度纬度参数调用的 View 。

设置这些参数后,我希望响应在序列化中添加距离字段。

我是这样做的:

def get_queryset(self):
latitude = self.request.QUERY_PARAMS.get('latitude', None)
longitude = self.request.QUERY_PARAMS.get('longitude', None)
if latitude and longitude:
center = fromstr('POINT(%s %s)'%(latitude,longitude))
queryset = queryset.distance(center).order_by('distance')
self.serializer_class.distance = serializers.CharField(source='distance')
self.serializer_class.Meta.fields += ('distance',)
return queryset.all()

我认为如果不同的话,我可以用两个单独的serializer_class来完成。

我想知道是否会更好,你觉得怎么样?

最佳答案

我猜距离,其中经度纬度没有给出?

我倾向于在序列化器本身上定义距离场,而不是将其动态添加到 View 上。

对于距离为 None 的情况(如果我不希望它出现在响应中),我会覆盖序列化器上的 to_native 以将其删除。例如:

def to_native(self, obj):
ret = super(MySerializer, self).to_native(obj)
if ret['distance'] is None:
del ret['distance']
return ret

最终结果是相同的,但这种方法更具凝聚力。我希望这会有所帮助。

关于geodjango - 在 Django Rest Framework generics.ListAPIView 中动态添加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17371085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com