Home > Net >  Dynamically setting max_value and min_value in a Django/DRF serializer field
Dynamically setting max_value and min_value in a Django/DRF serializer field

Time:09-10

I am trying to validate some query params in a Django request handler. I am expecting to receive a number n that's bounded by a range. I'd like to validate n using rest_framework.serializer. Something like this:

class NumberSerializer(serializers.Serializer):

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

However, I'd like to set min_value and max_value inside FloatField dynamically. Is that possible?

I can roll my own validator, but I am trying to learn DRF serializers. So far I feel like DRF serializers have a very specific purpose (validating incoming data against a model), but I want to get into the habit of using serializers for more generic validations like the example above.

CodePudding user response:

You can make custom validate method and min/max value there. For example

def validate_number(self, value):
    if value < self.get_min_value():
        return ValidationError(...)
    return value
  • Related