假设我有这样一个模型:嵌套领域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