エンジニアとしての市場価値を測りませんか?PR

企業からあなたに合ったオリジナルのスカウトを受け取って、市場価値を測りましょう

20
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Django】電話番号/郵便番号に適したModelを作る

Last updated at Posted at 2017-08-07

Django単体でアプリケーションを作るときはformの方でバリデーションかければいいのかもしれないけれど、Django REST FrameworkとしてAPIの提供を主とする場合、Modelの方でもバリデーションかけたい
以下は電話番号と郵便番号のフィールドに対してバリデーションをかけている例

models.py
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も設定できればよかったんだけれど、それはできなかった

20
18
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Comments

No comments

Let's comment your feelings that are more than good

20
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?