假設我有這樣一個模型:嵌套領域Django的REST框架
class Case(models.Model):
opened = models.DateTimeField(auto_now_add=True)
client_first_name = models.CharField(max_length=50)
client_last_name = models.CharField(max_length=50)
我想組client_*
領域,使序列化JSON是這樣的:
{
"opened": "2014-10-05T19:30:48.667Z",
"client": {
"first_name": "John",
"last_name": "Doe"
}
}
我嘗試以下,但不起作用,因爲client
不是一個實際的領域:
class ClientSerializer(serializers.ModelSerializer):
class Meta:
model = Case
fields = ('client_first_name', 'client_last_name')
class CaseSerializer(serializers.ModelSerializer):
client = ClientSerializer()
class Meta:
model = Case
fields = ('opened', 'client')
除了完全手動序列化之外,我還有哪些選項?我不想爲Client
製作單獨的模型,因爲這些數據確實屬於Case
。只讀不夠好。
有一個答案。 http://stackoverflow.com/questions/28187476/django-rest-framework-how-to-nest-several-fields-in-a- serializer。 – brawaga 2016-09-20 07:44:39
@brawaga這不是一個真正的答案,因爲它是「完全手動序列化」,我寫了我正在尋找除此之外的其他選項。不管怎麼說,還是要謝謝你;很好有作者的意見。 – 2016-09-20 11:00:55
@Dien,根據沒有答案,但在底部的頂部帖子更新,你可以建立一個解決方案不違反DRY,這不會是完全的,而是半人工序列化,只是因爲解決方案是操縱validated_data和實例和可能更多。它會雙向工作。 – brawaga 2016-09-21 07:50:17