For better code reusability you can create custom RangeIntegerField
from django.core.validators import MinValueValidator, MaxValueValidator
from django.db import models
class RangeIntegerField(models.IntegerField):
def __init__(self, *args, **kwargs):
validators = kwargs.pop("validators", [])
# turn min_value and max_value params into validators
min_value = kwargs.pop("min_value", None)
if min_value is not None:
validators.append(MinValueValidator(min_value))
max_value = kwargs.pop("max_value", None)
if max_value is not None:
validators.append(MaxValueValidator(max_value))
kwargs["validators"] = validators
super().__init__(*args, **kwargs)
You can use this Field
in your models
class SomeModel(models.Model):
some_value = RangeIntegerField(min_value=42, max_value=451)
It plays well with both django-forms and DRF's serializers