Djangoで私はプレーヤーのシャツ番号のフィールドを含むモデルを作成しようとしています。フィールドを数値入力のみに制限する方法があるかどうか疑問に思っていました。現在、 models.py
number = models.CharField(max_length=2)
入力を数値のみに制限できるようにするCharFieldとは別のフィールドはありますか?
Djangoには、フォームに使用するモデルまたはモデルフィールドのいずれかで、CharFieldではなくいくつかのフィールドがあります。
整数の場合、次を使用します:number = models.IntegerField()
あるいは
number = models.FloatField()(特定の商品の価格を表す場合に使用します。課金ソフトウェアで役立ちます。
BigIntegerフィールドのようなものもあり、より多くのnoが必要な場合に備えて
詳細なリファレンスチェックについては、 https://docs.djangoproject.com/en/1.11/ref/models/fields/
シリアライザを使用している場合は、これらの場合にバリデータを使用できます。たとえば、10桁のCharFieldの場合、次のようなバリデータを持つことができます。
def postalcode_validator(value):
rule = re.compile(r'^\d{10}$')
if not rule.search(value):
raise serializers.ValidationError("Postal code format must be XXXXXXXXXX")
return value
次に、このバリデーターをシリアライザーのCharFieldで使用できます。
# serializers.py
...
postal_code = serializers.CharField(validators=[postalcode_validator])
さらに、上記の例と同様に、バリデーターはモデルフィールドでも使用できます。