我正在尝试访问序列化程序类中的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的正确方法吗?
3条答案
按热度按时间ltqd579y1#
使用ViewSet时,可以在序列化程序上下文中访问请求(就像访问视图一样)。您可以从此
属性view.kwargs包含从你的url-config解析的命名参数,也就是从path-part解析的。
cnjp1d6j2#
根据文档,您要使用
self.request.query_params
你可以看到它在这里被使用
在DRF 3.0之前:
使用
request.QUERY_PARAMS
的用法,而不是小写的request.query_params
zynd9foi3#
self.context['request'].query_params