Django REST Framework and FileField absolute url

前端 未结 11 815
不知归路
不知归路 2020-12-13 02:10

I\'ve defined a simple Django app that includes the following model:

class Project(models.Model):
    name = models.CharField(max_length=200)
    thumbnail =         


        
11条回答
  •  南笙
    南笙 (楼主)
    2020-12-13 03:00

    I found it annoying to write the same code for a serialized method field. If you have set correctly the MEDIA_ROOT to your S3 bucket URL, you can add a field to the serializer like:

    class ProjectSerializer(serializers.ModelSerializer):
        logo_url = serializers.URLField(read_only=True, source='logo.url')
    
        class Meta:
            model = Project
    

    logo is an ImageField in the model. it must not be nullable in order to avoid errors like ValueError: The 'img' attribute has no file associated with it.

    I only use .build_absolute_uri in a serializer methodfield to return absolute urls that use other views in my API. for example, in my project there is an URL /webviews/projects/ that shows, a title and a button that collects some user input (i.e. not exactly what you would do with suffixes, as it's not a plain representation of the resource but includes some logic instead). the end point /projects// contains a field "webview_url" ponting there, which is generated with SerializerMethodField. it's not media.

提交回复
热议问题