yes*_*ema 5 django django-rest-framework
我需要获取文件参数在我的 rest api 中。
模型:
class Movie(models.Model):
title = models.CharField(max_length=100)
attachment = models.FileField(upload_to='files/courses/', default=None, blank=True, null=True)
def __str__(self):
return self.title
Run Code Online (Sandbox Code Playgroud)
序列化器:
class MovieSerializer(serializers.ModelSerializer):
attachment = serializers.FileField()
class Meta:
model = Movie
fields = ('title','attachment')
Run Code Online (Sandbox Code Playgroud)
看法:
class MovieViewSet(viewsets.ModelViewSet):
queryset = Movie.objects.all()
serializer_class = MovieSerializer
Run Code Online (Sandbox Code Playgroud)
当我做 GET 请求时,我得到了标题和文件 url,但我也想得到文件大小和文件名。怎么做?
简单的解决方案之一是重写类to_representation()的方法MovieSerializer,如下所示:
class MovieSerializer(serializers.ModelSerializer):
attachment = serializers.FileField()
class Meta:
model = Movie
fields = ('title', 'attachment')
def to_representation(self, instance):
representation = super().to_representation(instance)
attachment = {
"url": representation.pop("attachment"),
"size": instance.attachment.size,
"name": instance.attachment.name,
}
representation['attachment'] = attachment
return representationRun Code Online (Sandbox Code Playgroud)