Как я могу получить доступ к значениям QueryString в Serializer Django Read Framework

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

  •  21-12-2019
  •  | 
  •  

Вопрос

Я пытаюсь получить доступ к значениям 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?

Это было полезно?

Решение

При использовании призваний вы можете получить доступ к запросу в контексте серии Serializer (например, вы получите доступ к просмотру).Вы можете получить доступ к параметрам запроса из этого

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

Атрибут View.kwargs содержит названные аргументы, проанализированные с вашим URL-конфигурации, поэтому из путей.

Другие советы

Согласно Docs Вы хотите использовать self.request.QUERY_PARAMS

Вы можете увидеть его использование здесь P >.

Обновление:

как на DRF 3.0:

Использование запроса .Query_Params теперь в ожидании амортизации в пользу нижнего запроса .Query_Params

self.context['request'].query_params

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top