2014-08-28 75 views
0

我希望能夠讓Django REST框架反序列化可能以兩種略有不同的形式出現的數據,如下所述。我想我可以這樣做,重寫NodeGroupSerializer類中的restore_fields方法,但感覺這是錯誤的。我不想這樣做。我希望我已經在關於這種情況的文檔中漏掉了一些東西,任何指針都表示讚賞。django rest框架按名稱反序列化

模型

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": "" 
} 

回答

0

覆蓋get_serializer_class在您的視圖。 docs

相關問題