我希望能够让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 回答
在视图中覆盖
get_serializer_class
. docs