Динамическая установка 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