【Django】電話番号/郵便番号に適したModelを作る
Django単体でアプリケーションを作るときはformの方でバリデーションかければいいのかもしれないけれど、Django REST FrameworkとしてAPIの提供を主とする場合、Modelの方でもバリデーションかけたい
以下は電話番号と郵便番号のフィールドに対してバリデーションをかけている例
from django.db import models
from django.core.validators import RegexValidator
class SampleModel(model.model):
tel_number_regex = RegexValidator(regex=r'^[0-9]+$', message = ("Tel Number must be entered in the format: '09012345678'. Up to 15 digits allowed."))
tel_number = models.CharField(validators=[tel_number_regex], max_length=15, verbose_name='電話番号')
postal_code_regex = RegexValidator(regex=r'^[0-9]+$', message = ("Postal Code must be entered in the format: '1234567'. Up to 7 digits allowed."))
postal_code = models.CharField(validators=[postal_code_regex], max_length=7, verbose_name='郵便番号')
このようにすると、正規表現でバリデーションをかけることができる
マッチしないリクエストを送信した場合、それぞれに設定したmessageが返る
ハイフンをつけてレコードを保存したい場合などは、それに適した正規表現をregex=
のところに書くと良いです
余談としては本当はそれぞれの正規表現を定義したところでmax_lengthも設定できればよかったんだけれど、それはできなかった
Author And Source
この問題について(【Django】電話番号/郵便番号に適したModelを作る), 我々は、より多くの情報をここで見つけました https://qiita.com/xKxAxKx/items/86bdf0bc4c7dc9ee65d9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .