我们的Django项目发送GeoFeatureModelSerializer响应,我们希望在此响应中包含一个附加值以供JS访问。我们在www.example中找到了如何做到这一点 www.example.com
from rest_framework_gis import serializers as gis_serializers
from rest_framework import serializers as rest_serializers
from core.models import Tablename
class MarkerSerializer(gis_serializers.GeoFeatureModelSerializer):
new_value = rest_serializers.SerializerMethodField('get_new_value')
def get_new_value(self, foo): return True
class Meta:
fields = ("date", "new_value")
geo_field = "geom"
model = Tablename
JS可以通过geojson.features[0].properties.new_value
获得这个值,其中const geojson = await response.json()
,但它不必要地添加到每个条目中。我们希望它只包含一次,这样JS就可以通过newResponse.new_value
之类的东西访问它,现有的功能可以通过newResponse.geojson
或类似的东西继续获取相同的数据。
我们如何在这个响应中包含一个附加值?我们以为可能是wrapping our serializer in another,但他们似乎在问一个我们不明白的不同的事情。我们能把这个附加上去吗?在序列化器中,我们可以在某个地方做类似newResponse = {'new_value': new_value, 'geojson': geojson}
的事情吗?
我们已经对the Django Rest Framework serializers docs进行了挖掘,但无法解决这个问题,所以也许我们遗漏了一些东西。其他SO threads似乎只询问为每个条目添加数据。
编辑:我们应该提到我们正在使用 www.example.com ,看起来像:
class MarkerViewSet(viewsets.ReadOnlyModelViewSet):
bbox_filter_field = "location"
filter_backends = (filters.InBBoxFilter,)
queryset = Marker.objects.all()
serializer_class = MarkerSerializer
2条答案
按热度按时间u3r8eeie1#
我认为你需要在视图中处理,而不是在序列化器中处理。
如果仍然需要在序列化程序中处理,则需要创建另一个自定义序列化程序。
hiz5n14c2#
您可以使用get_foo()对带有SerializerMethodField的自定义字段。