据我所知,如果我想获得一个嵌入资源,需要在适当的序列化程序中定义它。然后无论我是否需要它都会被嵌入。 如果我想要两个不同的嵌入式推进器,我需要两个网址。
所以我想知道我是否可以实现像Eve这样的?embedded=
请求:
GET (/emails/<id>/?embedded={"author":1}
,默认情况下,嵌入资源是READ ONLY。
答案 0 :(得分:1)
假设您希望将不同的对象作为嵌入对象,您可以使用以下内容实现此类思考:
您可以将kwargs
传递给序列化程序context
serializer = YourSerializer(data=initial_first_shop_data,
context={"author": 1})
然后覆盖.to_representation()
方法
def to_representation(self, instance):
representation = super(DynamicFieldsModelSerializer, self).to_representation(instance)
if 'author' in self.context:
author = AuthorSerializer(Author.objects.get(pk=self.context['author']))
representation['author'] = author.data
return representation
如果您始终将author
作为嵌入对象,则将其添加到序列化程序会更简单,如果它不在context
中,请将其保留。