django Rest Framework 3.1 ModelSerializerで作成/更新を処理します。ネストされたデータを検証するにはどうすればよいですか?

Joel Rochat

ネストされた表現を使用してリソースを作成および更新しようとしています。

ここを見てみました-> http://www.django-rest-framework.org/api-guide/serializers/#writable-nested-representationsしかし、IDで定義されていないネストされたリソースが存在することを確認するために、検証をどこに置くべきかわかりません。

json

{
    "name": "this is my name"
    "network": {
        "code": "existing_code",
        "operator": "existing_op"
    },
 }

私のシリアライザーのメソッドを作成します

def create(self, validated_data):

    network = validated_data.pop("network")

    #this could throw a DoesNotExist exception !!!!
    validated_data["network"] = Network.objects.get(operator=network["operator"], code=network["code"])

    instance = manny.common.models.DeliveryPoint.objects.create(**validated_data)
    return instance

ModelSerializerのバリデーターでこれを直接チェックしても大丈夫ですか?

私のシリアライザーのメソッドを検証します

def validate(self, data):
    #some code here....

    if not Network.objects.filter(operator=data["operator"], code=data["code"]).exists():
        raise serializers.ValidationError("network doesn't exist")
    return data

または、ModelViewSetのcreateメソッドを書き直す必要がありますか?

ご協力いただきありがとうございます !

Blusky

代わりにget_object_or_404https://docs.djangoproject.com/fr/1.8/topics/http/shortcuts/#get-object-or-404を使用してみませんNetwork.objects.getか?

Networkオブジェクトが存在しない場合、発生した例外により404エラーが発生するため、手動で処理する必要はありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ