Comment puis-je accéder à QueryString valeurs dans Sérialiseur Django Repos Cadre
-
21-12-2019 - |
Question
Je suis en train d'essayer d'accéder à querystring valeurs dans sérialiseur de classe.
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')
Vues
class OneZeroViewSet(viewsets.ModelViewSet):
serializer_class = OneZeroSerializer
queryset = OneZero.objects.all()
Est-ce la bonne façon d'accéder à la chaîne de recherche?
La solution
Lorsque vous utilisez des vues de vue, vous pouvez accéder à la demande dans le contexte Serializer (comme vous accéder à la vue).Vous pouvez accéder aux paramètres de la requête à partir de cette
def get_alternate_name(self, obj):
request = self.context['request']
print request.QUERY_PARAMS['q']
return 'foo'
L'attribut view.kwargs contient les arguments nommés analysés à partir de votre URL-CONFIG, donc de la partie de chemin.
Autres conseils
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow