django charField只接受数字

x6h2sr28  于 2023-11-20  发布在  Go
关注(0)|答案(3)|浏览(115)

我有一个django charField,我希望它只接受数字。我们如何在django中实现这一点?

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

字符串
我希望total_employees只接受来自客户端的数字而不是字符串。我还想检查API端。

pftdvrlh

pftdvrlh1#

你可以把它变成一个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 ']

yi0zb3m4

yi0zb3m42#

有一个BigIntegerField,你可以使用它。
如果不是,你真的必须使用CharField,你可以使用validators。创建一个验证器,它试图将字段转换为int, Package 在try except块中。在except中,如果它不是int,则引发ValidationError

lsmepo6l

lsmepo6l3#

total_employees应该只需要正数
PositiveBigIntegerField允许取值范围0到9223372036854775807

total_employees = models.PositiveBigIntegerField()

字符串

PositiveIntegerField允许值为0到2147483647

total_employees = models.PositiveIntegerField()

PositiveSmallIntegerField允许取值范围0 ~ 32767

total_employees = models.PositiveSmallIntegerField()


另外,Django中没有NegativeIntegerFieldNegativeBigIntegerFieldNegativeSmallIntegerField

相关问题