首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django将请求传递给to_representation方法

Django将请求传递给to_representation方法
EN

Stack Overflow用户
提问于 2021-05-04 22:48:35
回答 1查看 171关注 0票数 0

我想重写序列化程序的to_representation。如何在其中传递请求对象,以便构建url?

代码语言:javascript
复制
class FooSerializer(serializers.ModelSerializer):
    name = serializers.StringRelatedField()
    link = serializers.SerializerMethodField()

    class Meta:
        model = Foo
        fields = ('name', 'link')

    def to_representation(self, instance):
        request = self.context.get('request') # Get request here
        return {'foo': request.build_absolute_uri(
                '/apps/foo/{}'.format(
                object.id))
        }
EN

回答 1

Stack Overflow用户

发布于 2021-05-04 22:52:48

将以下方法添加到您的视图集中,以便能够访问序列化程序中的请求:

代码语言:javascript
复制
def get_serializer_context(self):
    context = {'request': self.request}
    return context

如果您只是想向序列化程序添加一个URL,则可以向序列化程序添加序列化程序标识字段,而不是覆盖to_representation方法:

代码语言:javascript
复制
url = serializers.HyperlinkedIdentityField(
    view_name='foo-detail',
    lookup_url_kwarg='pk'
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67387088

复制
相关文章

相似问题

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