如何在django rest框架中将绝对url字段放在序列化器模型中?

wha*_*ard 3 django django-rest-framework

我有一个这样的模型:

class GiveAbsolute(serializers.Field):
    def to_native(self,value): 
         # this where it give an error (self doesn't have request)
         # what i want it to give full url 
         # like: http://www.blabla.com/othermodel/1
         return reverse('link_to_othermodel',
                         args=[value],
                         request=self.request)

class SomethingSerializer(serializers.ModelSerializer):
    # field with foreign key
    othermodel = GiveAbsolute(source="othermodel.id")
    class Meta:
        model=Something
        fields("fields1","othermodel")
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个目标?谢谢

Kwa*_*nor 8

来自消息来源

请求对象是上下文字典的条目.即.

request = self.context.get('request')

在你的情况下,只需:

self.request = self.context.get('request')
Run Code Online (Sandbox Code Playgroud)

然后建立网址

self.request.build_absolute_uri(reverse('some_url_name'))
Run Code Online (Sandbox Code Playgroud)