web-dev-qa-db-ja.com

Djangoモデル番号フィールド

Djangoで私はプレーヤーのシャツ番号のフィールドを含むモデルを作成しようとしています。フィールドを数値入力のみに制限する方法があるかどうか疑問に思っていました。現在、 models.py

number = models.CharField(max_length=2)

入力を数値のみに制限できるようにするCharFieldとは別のフィールドはありますか?

10
Edward Knight

Djangoについてのすばらしい点の1つは、モデルについてさまざまなタイプのモデルを提供することです here )。

あなたの場合はこのようなものを試してください

number = models.IntegerField()

IntegerFieldについての詳細を読むことができます ここ

20

Djangoには、フォームに使用するモデルまたはモデルフィールドのいずれかで、CharFieldではなくいくつかのフィールドがあります。

整数の場合、次を使用します:number = models.IntegerField()

あるいは

number = models.FloatField()(特定の商品の価格を表す場合に使用します。課金ソフトウェアで役立ちます。

BigIntegerフィールドのようなものもあり、より多くのnoが必要な場合に備えて

詳細なリファレンスチェックについては、 https://docs.djangoproject.com/en/1.11/ref/models/fields/

0
Kurian Benoy

シリアライザを使用している場合は、これらの場合にバリデータを使用できます。たとえば、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])

さらに、上記の例と同様に、バリデーターはモデルフィールドでも使用できます。

0
Winston