Django rest framework django rest framework 3.1处理ModelSerializer中的创建/更新我在哪里验证嵌套数据?
我尝试使用嵌套表示创建和更新资源 我看了一下这里->。但是我不知道将验证放在哪里,以验证我的嵌套资源是否存在,它不是由id定义的 json 我的序列化程序的create方法 可以直接在ModelSerializer上的验证器中检查这一点吗: 验证我的序列化程序的方法 还是必须重写ModelViewSet的create方法Django rest framework django rest framework 3.1处理ModelSerializer中的创建/更新我在哪里验证嵌套数据?,django-rest-framework,Django Rest Framework,我尝试使用嵌套表示创建和更新资源 我看了一下这里->。但是我不知道将验证放在哪里,以验证我的嵌套资源是否存在,它不是由id定义的 json 我的序列化程序的create方法 可以直接在ModelSerializer上的验证器中检查这一点吗: 验证我的序列化程序的方法 还是必须重写ModelViewSet的create方法 谢谢你的帮助 为什么不使用get_object\u或_404()而不是Network.objects.get 如果网络对象不存在,引发的异常将产生404错误,您不需要手动处理它
谢谢你的帮助 为什么不使用
get_object\u或_404
()而不是Network.objects.get
如果网络对象不存在,引发的异常将产生404错误,您不需要手动处理它。您好,我认为序列化程序中引发的Http404异常不会被视图正确处理,但是。。。我错了,谢谢你的回复!
{
"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
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