Валидация данных формы и параметров запроса в одном сериализаторе в APIView в django rest framework
Я использую django rest framework для своего веб-API. В моем post API мне нужно получить данные формы и параметры запроса из запроса и передать их в сериализатор для валидации. Для этого я делаю следующее:
version = request.query_params.get('version', 'v1')
serializer = MySerializer(
data=request.data, context={'version': version})
и в сериализаторе я обращаюсь к нему следующим образом:
version = serializers.CharField(required=False, default='v1')
и затем обращаюсь к нему в моем APIView как:
if serializer.is_valid():
data = serializer.validated_data
print("version: ", data['version'])
Даже если я передаю v2 в качестве параметров запроса, он всегда выводит v1. Что я делаю не так?
Думаю, вы можете попробовать следующее:
sent_data = {
**request.data,
**request.query_params,
}
serializer = YourSerializer(data=sent_data)
serializer.is_valid(raise_exception=True)
Или, если вы хотите передать сериализатору только version параметр запроса, вы можете сделать так:
sent_data = {
**request.data,
"version": request.query_params.get("version", "v1"),
}
serializer = YourSerializer(data=sent_data)
serializer.is_valid(raise_exception=True)