Как передать параметры запроса из сериализатора DRF
когда мы передаем параметры запроса через запрос к DRF, параметры запроса передаются через сериализатор? или есть ли способ передать их из сериализатора?
Насколько я знаю, нет способа передать их в сериализатор. Параметры запроса из запроса обрабатываются только внутри представления. Пример фильтрации возвращаемого набора запросов с помощью параметра запроса будет выглядеть следующим образом:
from rest_framework.decorators import api_view
from rest_framework.response import Response
@api_view(['GET'])
def product_list(request):
qs = Product.objects.all()
search = request.query_params.get('search') # Get query parameter
if search is not None:
qs = qs.filter(title__icontains=search)
serializer = ProductSerializer(qs, many=True)
return Response(serializer.data)
Вы можете передать дополнительные данные при инстанцировании сериализатора в аргументе context
:
def some_view(self, request):
serializer = SomeSerializer(request.data, context={ "qp": request.query_params.get('qp')}
Контекст будет доступен в любом полевом методе сериализатора, например:
def get_some_field(self, instance):
qp = self.context["qp]