django rest框架按名称反序列化

时间:2014-08-28 09:15:57

标签: python django deserialization django-rest-framework

我希望能够让Django REST框架反序列化数据,这些数据可能会以下面略微不同的两种形式出现。我想我可以做到这一点覆盖NodeGroupSerializer类中的restore_fields方法,但感觉这是错误的。我不想这样做。我希望我在文档中遗漏了一些关于这种情况的内容,任何指针都表示赞赏。

模型

class NodeGroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
    model = NodeGroup
    depth = 3

class ServiceSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
    model = Service


class EnvironmentSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
    model = Environment

序列化:

{
    "environment": {
        "url": "http://localhost:8000/api/environments/1/", 
        "name": "Development", 
    }, 
    "service": {
        "url": "http://localhost:8000/api/services/144/", 
        "name": "testservice", 
    }, 
    "url": "http://localhost:8000/api/nodegroups/1/", 
    "domain": "test.cloud.com", 
    "hieradata": ""
}

我希望能够在下面的表单中反序列化请求,其中可以通过我知道唯一的名称值查找环境和服务。我怎样才能让序列化程序类检查请求值并在需要时进行查找?

需要反序列化的其他表格:

{
    "environment": "Development", 
    "service": "testservice", 
    "domain": "test.cloud.com", 
    "hieradata": ""
}

1 个答案:

答案 0 :(得分:0)

在视图中覆盖get_serializer_classdocs