2017-02-27 13 views
1

DRFは、デフォルトでファイルフィールドまたはイメージフィールドパスを相対パスにシリアル化します。この中Django RESTフレームワークとFileFieldの同じフィールドにある絶対URL

のように、私はそれがすなわち「file_url」というカスタムフィールドを生成し、フルパスをシリアル化することが可能です知っているDjango REST Framework and FileField absolute url

質問します。

しかし、同じフィールドでシリアル化することはできますか?以下のような:

class Project(models.Model): 
    name = models.CharField(max_length=200) 
    thumbnail = models.FileField(upload_to='media', null=True) 

class ProjectSerializer(serializers.HyperlinkedModelSerializer): 

    class Meta: 
     model = Project 
     fields = ('id' ,'url', 'name', 'thumbnail') 

class ProjectViewSet(viewsets.ModelViewSet): 
    queryset = Project.objects.all() 
    serializer_class = ProjectSerializer 

{ 
    "id": 1, 
    "url": "http://localhost:8000/api/v1/projects/1/", 
    "name": "Institutional", 
    "thumbnail": "ABSOLUTE URL" 
} 

答えて

2

あなたはto_representationメソッドをオーバーライドして、そこに絶対パスを記述することができます。

class ProjectSerializer(serializers.HyperlinkedModelSerializer): 

    class Meta: 
     model = Project 
     fields = ('id' ,'url', 'name', 'thumbnail') 

    def to_representation(self, instance): 
     representation = super(ProjectSerializer, self).to_representation(instance) 
     domain_name = # your domain name here 
     full_path = domain_name + instance.thumbnail.url 
     representation['thumbnail'] = full_path 
     return representation 
+0

おかげで、あなたの歓迎@lapinkoiraチャンピオン – lapinkoira

+0

のように動作します –

関連する問題