栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用Django-rest-framework在序列化器级别扩展模型

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用Django-rest-framework在序列化器级别扩展模型

首先,创建一个视图,该视图将返回您感兴趣的MenuItemComponent实例。

class ListComponents(generics.ListAPIView):    serializer_class = MenuItemComponentSerializer    def get_queryset(self):        """        Override .get_queryset() to filter the items returned by the list.        """        menuitem = self.kwargs['menuitem']        return MenuItemComponent.objects.filter(menuItem=menuitem)

然后,您需要创建一个序列化器以提供所需的表示形式。您的示例比典型案例更有趣/更有趣,因此看起来像这样…

class MenuItemComponentSerializer(serializers.Serializer):    url = ComponentURLField(source='component')    name = Field(source='component.name')    isReplaceable = Field()

字段“名称”和“ isReplaceable”可以仅使用默认的只读

Field
类。

这里没有一个字段完全符合您的“ url”情况,因此我们将为此创建一个自定义字段:

class ComponentURLField(serializers.Field):    def to_native(self, obj):        """        Return a URL, given a component instance, 'obj'.        """        # Something like this...        request = self.context['request']        return reverse('component-detail', kwargs=kwargs, request=request)

我认为那应该是正确的。

这是用于只读序列化的-
如果您想要可写序列化,则需要研究重写

restore_object
序列化器上的方法,并使用
WritableField
或类似的方法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/626021.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号