Reputation: 57
Okay so I need to have my field have a maximum of 10 integers allowed to be entered. I tried MaxValueValidator
but I figured out that this just needs a value thats lower than the set value. I want to be able to enter a maximum of 10 numbers, so it should work if I enter just one number, but also if I enter 10.
Code ex:
class Random(models.Model):
code=models.IntegerField
Upvotes: 3
Views: 3226
Reputation: 12761
Can you try something like below? (code not tested.)
#add this import statement at top
from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _
#A function to check length
def validate_length(value):
an_integer = value
a_string = str(an_integer)
length = len(a_string)
if length > 10:
raise ValidationError(
_('%(value)s is above 10 digits')
)
#Add to model field
class MyModel(models.Model):
validate_len = models.IntegerField(validators=[validate_length])
refer below https://docs.djangoproject.com/en/3.2/ref/validators/
Upvotes: 4
Reputation: 212
The RegexValidator
could be used with the correct regex. If changing IntegerField
to CharField
isn't a big deal, you could also write a validator to ensure code
has a 10 digit maximum. It could be a custom validator that verifies each character is a digit and there are less than 10 total along with any other requirements you may have.
Upvotes: 0