@marselabdullin

Как преобразовать файл blob передеаваемый через rest в imagefield django?

В мое веб-приложение приходит картинка по api в формате blob(она там обрезается пользователем) и мне нужно принять ее, преобразовать в imagefield и сохранить пользователю.

Я написал такой код в сериалайзере, ничего не менятеся и значение переменных мне тоже не посмотреть(точно ли validated_data в таком формате как я думаю).

serializers.py:
class ProfileSerializer(serializers.ModelSerializer):
    # image = serializers.ImageField(use_url=True)

    class Meta:
        model = User
        fields = ["first_name", "last_name", "email", "image"]

    def create(self, validated_data):
        user = User.objects.get(email=validated_data['email'])
        user.update(**validated_data)

        with io.BytesIO(validated_data['image']) as stream:
            django_file = File(stream)
            user.image.save('{}_profile_image'.format(user.email), django_file)
            

        return user.save()

views.py:
class UserProfile(generics.RetrieveUpdateDestroyAPIView, generics.CreateAPIView):
    queryset = User.objects.all()
    serializer_class = ProfileSerializer
    permission_classes = (IsAuthenticated,)

    def get_object(self):
        queryset = self.filter_queryset(self.get_queryset())
        obj = queryset.get(pk=self.request.user.id)
        # May raise a permission denied
        self.check_object_permissions(self.request, obj)
        return obj

    def create(self, request, *args, **kwargs):
        if not request.data:
            return response.Response({"result": "data can`t be a blanks"}, status.HTTP_400_BAD_REQUEST)
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        self.perform_create(serializer)
        return response.Response(serializer.data, status=status.HTTP_201_CREATED)
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ответы на вопрос 2
tumbler
@tumbler Куратор тега Django
бекенд-разработчик на python
Документация по загрузке файлов не поможет?
Ответ написан
@bacon
когда я там последний раз ковырялся, с файла всё было плохо и приходилось в сериалайзере делать не validated_data['image'] а что-то типа self.context.get('view').request.FILES['image']
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы