ネストされた表現を使用してリソースを作成および更新しようとしています。
ここを見てみました-> http://www.django-rest-framework.org/api-guide/serializers/#writable-nested-representations。しかし、IDで定義されていないネストされたリソースが存在することを確認するために、検証をどこに置くべきかわかりません。
{
"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メソッドを書き直す必要がありますか?
ご協力いただきありがとうございます !
代わりにget_object_or_404
(https://docs.djangoproject.com/fr/1.8/topics/http/shortcuts/#get-object-or-404)を使用してみませんNetwork.objects.get
か?
Networkオブジェクトが存在しない場合、発生した例外により404エラーが発生するため、手動で処理する必要はありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加