Serializer Django Rest Framework で QueryString 値にアクセスするにはどうすればよいですか

StackOverflow https://stackoverflow.com//questions/23006735

  •  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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top