django charField принимает только номера - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть django charField, и я хочу, чтобы он принимал только числа. Как мы можем добиться этого в django?

class Xyz(models.Model):
     total_employees = models.CharField(max_length=100)

Я хочу, чтобы total_employees принимал только числа, а не строки из моего клиент. Я хочу поставить чек на конец API тоже.

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

Существует BigIntegerField , который вы можете использовать вместо этого.

Если нет, и вы ДЕЙСТВИТЕЛЬНО ДОЛЖНЫ использовать CharField, вы можете использовать валидаторы . Создайте валидатор, который попытается преобразовать поле в int, обернутый в блок try try. В исключении вы поднимаете ValidationError, если не int.

0 голосов
/ 01 апреля 2020

Вы можете превратить его в IntegerField или BigIntegerField на уровне формы, в которой вы создаете форму для модели.

class Xyzform(ModelForm):
     total_employees =forms.IntegerField()
    class Meta:
        model=Xyz
        fields=['total_employees ']  

или вы можете добавить проверку на уровне формы:

from django.core.exceptions import ValidationError
 # paste in your models.py
 def only_int(value): 
    if value.isdigit()==False:
        raise ValidationError('ID contains characters')

class Xyzform(ModelForm):
     total_employees =forms.CharField(validators=[only_int])
    class Meta:
        model=Xyz
        fields=['total_employees '] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...