首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在django rest框架中调用序列化程序

在django rest框架中调用序列化程序
EN

Stack Overflow用户
提问于 2016-06-07 14:25:59
回答 1查看 4.5K关注 0票数 3

我在序列化程序上遇到了一些问题。我正在调用post方法,希望它调用序列化程序。另外,我希望将用户发送到序列化程序。我的职位方法是:

代码语言:javascript
运行
复制
def post(self, request, *args, **kwargs):
    serializer = ResourceListSerializer(context={'request': request}, data={})
    serializer.is_valid(raise_exception=True)
    serializer.save(creator=request.user)

但它似乎并没有在序列化程序中获取数据。在序列化程序中,self.validated_data似乎是空的。这是序列化程序上的代码:

代码语言:javascript
运行
复制
def save(self, **kwargs):
    """
    Update `project` and `resource_type` fields in database.
    """
    resources = self.validated_data.get('resources')
    if resources is not None and len(resources) > 0:
        self.validated_data['project'] = self.validated_data['resources'][0].project
        self.validated_data['resource_type'] = self.validated_data['resources'][0].resource_type

    try:
        project = self.data.get('project')
        return super(ResourceListSerializer, self).save(**kwargs)
    except:
        try:
            project = self.validated_data['project']
            return super(ResourceListSerializer, self).save(**kwargs)
        except:
            raise serializers.ValidationError("Resource List should belong to a Project.")

对如何正确调用序列化程序有任何建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-07 14:37:13

实例化序列化程序时传递data,而不是context

代码语言:javascript
运行
复制
def post(self, request, *args, **kwargs):
    serializer = ResourceListSerializer(data=request.data)
    serializer.is_valid(raise_exception=True)
    serializer.save(creator=request.user)

您只需要context来传递额外的上下文。除非您的序列化程序中有访问self.context的自定义代码,否则不需要它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37682058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档