我想重写序列化程序的to_representation。如何在其中传递请求对象,以便构建url?
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))
}发布于 2021-05-04 22:52:48
将以下方法添加到您的视图集中,以便能够访问序列化程序中的请求:
def get_serializer_context(self):
context = {'request': self.request}
return context如果您只是想向序列化程序添加一个URL,则可以向序列化程序添加序列化程序标识字段,而不是覆盖to_representation方法:
url = serializers.HyperlinkedIdentityField(
view_name='foo-detail',
lookup_url_kwarg='pk'
)https://stackoverflow.com/questions/67387088
复制相似问题