Serializer Django Rest Framework で QueryString 値にアクセスするにはどうすればよいですか
-
21-12-2019 - |
質問
シリアライザークラスのクエリ文字列値にアクセスしようとしています。
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()
これはクエリ文字列にアクセスする正しい方法ですか?
解決
Viewessetsを使用するときは、シリアライザコンテキストでリクエストにアクセスできます(ビューにアクセスするように)。この
からクエリパラメータにアクセスできます。def get_alternate_name(self, obj):
request = self.context['request']
print request.QUERY_PARAMS['q']
return 'foo'
.
属性View.kwargsには、path-partから、url-configから解析された名前付き引数が含まれています。
他のヒント
docs に従って
self.request.QUERY_PARAMS
を使用します。
更新:
DRF 3.0以降:request.query_paramsの使用法は現在、償却中の償却中です。 下限request.query_params
の
self.context['request'].query_params
所属していません StackOverflow