【发布时间】:2015-07-08 23:15:06
【问题描述】:
我尝试使用嵌套表示来创建和更新资源。
我看了一下这里 -> 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方法?
感谢您的帮助!
【问题讨论】: