3

Djangoに入力されたすべての文字に対して0〜9文字のみを許可したいと思いますCharField

と一緒に使用するRegexValidator()場合regex = r'[^0-9]'フィールドに0〜9以外のすべてを入力できます。実際には、、、、、、などの文字列を入力できますが、は"word"入力"a4523"できませ"!#$%#^%""5432bc" "4523"

を取り出して^設定するとregex = r'[0-9]'(以下のコードを参照)、、、を入力できますが"4523"またはは入力できませ"5432bc""a4523" "word""!#$%#^%"

を削除する^と、正しい方向に進むように見えますが、完全な方法ではありません。PositiveSmallIntegerField数値入力を文字列として扱いたいので、を使用したくありません。

class Number(models.Model):
    number = models.CharField(
        max_length=14,
        validators=[
            RegexValidator(
                r'[0-9]',
                'Only 0-9 are allowed.',
                'Invalid Number'
            ),
            MinLengthValidator(4),
            MaxLengthValidator(14),
        ],
    )
4

1 に答える 1

7

正規表現[^0-9]は、文字列内の任意の場所で数字以外の数字と一致することを意味します。おそらく^[0-9]、文字列の先頭に数字が必要な、で始めるつもりでした。^[0-9]*$完全な解決策として、文字列内のすべての文字が数字である必要があるが必要だと思います。

于 2012-11-13T00:55:38.990 に答える