Загрузка изображений внутри вложенных сериализаторов в django rest framework

Как я могу загрузить изображения, когда пользователь пытается создать объявление. Мне нужно загрузить изображения на мой компьютер и присвоить их объявлению, которое пользователь пытается создать.

Models.py

class Announcement(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    address = models.CharField(max_length=100)
    photo = models.ManyToManyField(Photo, blank=True)

def nameFile(instance, filename):
    return '/'.join(['images', str(instance.name), filename])


class Photo(models.Model):
    name = models.CharField(max_length=100)
    image = models.ImageField(upload_to=nameFile, blank=True, null=True)

Views.py

class AnnouncementCreate(CreateAPIView):
    permission_classes = [IsAuthenticated]
    queryset = models.Announcement.objects.all()
    serializer_class = AnnouncementSerializer

    def perform_create(self, serializer):
        serializer.save(author=self.request.user)

class PhotoViewSet(ListAPIView):

    queryset = models.Photo.objects.all()
    serializer_class = PhotoSerializer

    def post(self, request, *args, **kwargs):
        file = request.data.get('image')
        image = models.Photo.objects.create(image=file)
        return HttpResponse(json.dumps({'message': "Uploaded"}), status=200)

Serializers.py

class AnnouncementSerializer(serializers.ModelSerializer):
    parameters = ParameterSerializer(many=True, required=False)
    photo = PhotoSerializer(many=True, required=False)

    class Meta:
        model = Announcement
        fields = ['id', 'name', 'address', 'date',
                  'price', 'description', 'author', 'parameters', 'photo']

class PhotoSerializer(serializers.ModelSerializer):
    class Meta:
        model = Photo
        fields = ('name', 'image')

Вернуться на верх