首页 文章

django rest框架按名称反序列化

提问于
浏览
0

我希望能够让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

    在视图中覆盖 get_serializer_class . docs

相关问题