#django #django-rest-framework
#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
Сериализатор:
class MovieSerializer(serializers.ModelSerializer):
attachment = serializers.FileField()
class Meta:
model = Movie
fields = ('title','attachment')
Вид:
class MovieViewSet(viewsets.ModelViewSet):
queryset = Movie.objects.all()
serializer_class = MovieSerializer
Когда я получаю запрос, я получаю заголовок и URL-адрес файла,
Но я хочу получить также размер файла и имя файла.
Как это сделать?
Ответ №1:
Одним из простых решений является переопределение 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 representation
Комментарии:
1. Это приводит к ошибке FileNotFoundError: [Ошибка 2] Нет такого файла или каталога: ‘/project/media/styles/graded.svg’. Можете ли вы придумать решение?