Динамическая установка max_value и min_value в поле сериализатора Django/DRF

Я пытаюсь проверить некоторые параметры запроса в обработчике запроса Django. Я ожидаю получить число n, которое ограничено диапазоном. Я хотел бы проверить n, используя rest_framework.serializer. Что-то вроде этого:

class NumberSerializer(serializers.Serializer):

    number = serializers.FloatField(min_value=1, max_value=10)

Однако я хотел бы динамически установить min_value и max_value внутри FloatField. Возможно ли это?

Я могу создать свой собственный валидатор, но я пытаюсь изучить сериализаторы DRF. Пока мне кажется, что сериализаторы DRF имеют очень специфическую цель (проверка входящих данных на соответствие модели), но я хочу приобрести привычку использовать сериализаторы для более общих проверок, как в примере выше.

Вы можете создать пользовательский метод проверки и минимальное/максимальное значение. Например

def validate_number(self, value):
    if value < self.get_min_value():
        return ValidationError(...)
    return value
Вернуться на верх