2017-08-14 18 views
0

いくつかの状況では、通常のAPIView書き込み通常のビューを使用するだけで、シリアライザはユーザー入力をチェックするだけで、データベースオブジェクトとして保存されません。 しかし、時には、私は例えば、ModelSerializerの便利を使用したい:私はModelSerializerユーザー入力を使用する必要がありますか?

class User(models.Model): 
    phone = models.CharField(_("phone number"), max_length=11, unique=True, 
     validators=[ 
      validators.RegexValidator(r'^1[34578]\d{9}$', _("phone format error")) 
     ]) 

class PhoneCodeSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = User 
     fields = ('phone',) 

しかし、あなたが知っている、modelSerializerは、携帯電話の形式を確認し、独自のチェックだけではなく。しかし、ここで私はちょうど電話フィールドのフォーマットバリデータを使用したい、そうでなければバリデータをシリアライザにコピーしなければならない、私はそれを嫌う。それ以上に良い方法はありますか?

答えて

0

モデルを通じて固有のチェックが適用されているにも関わらず、要求していることの実装に成功したとします。だからシリアライザレベルでそれを使用しないでください、何かが欠けていますか?

+0

私は1つの電話番号、私は応答の電話番号を掲示する1つのAPIです。電話番号の形式を確認する必要があります – kotepillar

+0

次に、別のバリデータ(つまり、既存のバリデータをコピーする)を作成する必要があります。この場合、ModelSerializerは使用できません。 –

関連する問題