[英]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.