Domanda

Sto cercando di accedere ai valori di querystring in classe serializzatore.

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')
.

Visualizzazioni

class OneZeroViewSet(viewsets.ModelViewSet):

   serializer_class = OneZeroSerializer

   queryset = OneZero.objects.all()
.

è questo modo giusto per accedere a querystring?

È stato utile?

Soluzione

Quando si utilizza Viewets, è possibile accedere alla richiesta nel contesto di serializzatore (come se si acceda alla vista).È possibile accedere ai parametri di query da questo

def get_alternate_name(self, obj):
    request = self.context['request']
    print request.QUERY_PARAMS['q']
    return 'foo'
.

L'attributo view.kwargs contiene gli argomenti denominati analizzati dal tuo URL-config, quindi dalla parte del percorso.

Altri suggerimenti

Secondo il Docs che si desidera utilizzare self.request.QUERY_PARAMS

Puoi vederlo usato qui

.

Aggiornamento:

AS di DRF 3.0:

.

L'utilizzo di richiesta.Query_Params è ora in attesa di deprecazione a favore della richiesta inferiore .Query_Params

self.context['request'].query_params

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top