Django Rest-Framework Во время валидации проверяйте тип метода запроса

Я работаю над вызовом API Validation Errors. Мне нужно убедиться, что 2 даты не пересекаются при выполнении новых вызовов "POST", который работает нормально. Я делаю запрос model.objects.Filter() и если что-то возвращается, я возвращаю ошибку валидации. Однако я хочу возвращать эту ошибку только при POST-запросах. Я пробовал

if request.method == "POST":

do something

но я получаю ошибки под словом "request", говорящие, что "request" не определен. есть ли другой способ проверить тип метода во время валидации? Я делаю это в своем сериализаторе. Спасибо!

Вы можете передать контекст запроса сериализатору из вашего представления:

serializer = SomeSerializer(context={'request':request}, data=request.data)

В вашем сериализаторе вы можете получить доступ к методу запроса как:

self.context['request'].method

Используйте более одного сериализатора и переопределите get_serializer_class функцию drf под ваше представление

def get_serializer_class(self):
        if self.request.method == 'POST':
            return PostSerializer
        return OtherMethodsSerializer

По предложению kamran890, вот что я сделал в своем сериализаторе, чтобы выполнять эту валидацию только во время вызова метода POST. Затем другие типы валидации во время других вызовов

if self.contect['request'].method == 'POST':
    *do post validation*
else:
    *do patch/put validation*
Вернуться на верх