'How to set max length on integerfield Django Rest
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
Solution 1:[1]
Can you try something like below? (code not tested.)
#add this import statement at top
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/
Solution 2:[2]
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.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Charitra Agarwal |
Solution 2 |