Django rest framework django rest framework 3.1处理ModelSerializer中的创建/更新我在哪里验证嵌套数据?

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错误,您不需要手动处理它

我尝试使用嵌套表示创建和更新资源

我看了一下这里->。但是我不知道将验证放在哪里,以验证我的嵌套资源是否存在,它不是由id定义的

json 我的序列化程序的create方法 可以直接在ModelSerializer上的验证器中检查这一点吗:

验证我的序列化程序的方法 还是必须重写ModelViewSet的create方法


谢谢你的帮助

为什么不使用
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