21 lines
877 B
Python
21 lines
877 B
Python
import itertools
|
|
|
|
from django.core.validators import MinValueValidator, MaxValueValidator
|
|
from django.db import models
|
|
|
|
|
|
class IntegerField(models.IntegerField):
|
|
def __init__(self, *args, min_value=None, max_value=None, validators=tuple(), **kwargs):
|
|
self.min_value, self.max_value = min_value, max_value
|
|
if min_value is not None:
|
|
validators = itertools.chain((MinValueValidator(min_value),), validators)
|
|
if max_value is not None:
|
|
validators = itertools.chain((MaxValueValidator(max_value),), validators)
|
|
super().__init__(*args, validators=validators, **kwargs)
|
|
|
|
def formfield(self, **kwargs):
|
|
if self.min_value is not None:
|
|
kwargs['min_value'] = self.min_value
|
|
if self.max_value is not None:
|
|
kwargs['max_value'] = self.max_value
|
|
return super().formfield(**kwargs)
|