簡體   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