如何在Serializer Django REST框架中访问QueryString值
-
21-12-2019 - |
题
我正在尝试在Serializer类中访问QueryString值。
class OneZeroSerializer(rest_serializer.ModelSerializer):
location = rest_serializer.SerializerMethodField('get_alternate_name')
def get_alternate_name(self, obj):
view = self.context['view']
print view.kwargs['q'] #output is {}
return 'foo'
class Meta:
model = OneZero
fields = ('id', 'location')
.
视图
class OneZeroViewSet(viewsets.ModelViewSet):
serializer_class = OneZeroSerializer
queryset = OneZero.objects.all()
.
是访问QueryString的正确方法?
解决方案
使用ViewSets时,可以访问序列化程序上下文中的请求(如您访问视图)。您可以从此访问该查询参数>
def get_alternate_name(self, obj):
request = self.context['request']
print request.QUERY_PARAMS['q']
return 'foo'
.
属性视图.kwargs包含从url-config中解析的命名参数,从路径部分中。
其他提示
根据 docs 要使用self.request.QUERY_PARAMS
更新:
DRF 3.0:
请求的使用.Query_Params现在正在削弱弃用问题 低级Request.Query_Params
self.context['request'].query_params
不隶属于 StackOverflow