2016-05-31 22 views
1

Django REST APIが設定されており、有効な着信要求に対して正しく機能します。リクエストの中には、フィールドの一部が空であるものがあります。シリアライザの空のフィールドにデフォルトの置換値を指定して検証テストに合格する方法はありますか?たとえば、次のシリアライザがあります。Django RESTがデフォルトに空に置き換えられる

class SearchRequestSerializer(serializers.ModelSerializer): 

    myfield1 = serializers.DecimalField(max_digits=10, decimal_places=2, coerce_to_string=False, default=0, required=False, allow_null=True) 
    class Meta: 
    model = SearchRequest 
    fields = ('myfield0', 'myfield1') 

myfield1が提供されないことがあります。上記のように、私は0に、それをデフォルトにしようとしたが、まだそれがどんな影響を与えている場合、私は知らないが、私のリクエストが配列されていると私はオプションの多く=とシリアライザを使用してい

"myfield1":["A valid number is required."] 

を取得します真実。 0は小数点ではないため、このエラーを持っている

[{"myfield0":3, "myfield1":""}, {"myfield0":4, "myfield1":5}] 
+0

これは... http://stackoverflow.com/questions/19780731/django-rest-framework-serializer-field-required-false – AceLearn

+0

@ Trying2Learn有用であるかどうかを確認してください:おかげで、私はこれを見ましたしかし解決策を働かせることができなかった... – Botond

答えて

1

例不完全な要求は次のようになります。 例default=0.0またはdefault=None

更新

を試してみて、不完全な要求は次のようになります。ここ

[{"myfield0":3, "myfield1":""}, {"myfield0":4, "myfield1":5}] 

問題は、あなたがmyfield1として空の文字列"myfield1": ""を供給しているということです。あなたのリクエストはこのようになります。

[{"myfield0":3}, {"myfield0":4, "myfield1":5}] 

値がない場合は、myfield1をリクエストしてください。さもなければ、少なくともタイプにマッチするデータを供給しなければなりません。フィールドが空でない場合、DRFはそれに対して検証を行います。defaultは、サブミットされたリクエストにフィールドの値がない場合にのみ使用されます。

http://www.django-rest-framework.org/api-guide/fields/#default

+0

どちらも問題を解決するようだ... – Botond

+0

@Botondおそらくそれはあなたの要求に関連しています。このエラーを出すリクエストの例を追加できますか? –

+0

エラーを作成するサンプルリクエストを追加しました。 – Botond

関連する問題