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