繁体   English   中英

django charField 只接受数字

[英]django charField accepting only numbers

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

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

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

您可以使用BigIntegerField代替。

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

您可以在表单级别将其变为 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 '] 

total_employees应该只需要正数

PositiveBigIntegerField允许从 0 到 9223372036854775807 的值:

total_employees = models.PositiveBigIntegerField()

PositiveIntegerField允许从 0 到 2147483647 的值:

total_employees = models.PositiveIntegerField()

PositiveSmallIntegerField允许从 0 到 32767 的值:

total_employees = models.PositiveSmallIntegerField()

此外, Django中没有“NegativeIntegerField”“NegativeBigIntegerField”“NegativeSmallIntegerField”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM