0

I am trying to upload multi-images to a single post which currently I am being able to upload only single image and get the confirmation through API. How can I make this to multi upload ?

My models.py

from django.db import models

# Create your models here.


class UploadedImage(models.Model):
   img = models.ImageField('Uploaded Image', upload_to='images') # stores uploaded image
   dt_created = models.DateTimeField(auto_now_add=True, verbose_name='Created')

my serializers.py

from rest_framework import serializers
from .models import UploadedImage


class UploadedImageSerializer(serializers.ModelSerializer):
 class Meta:
    model = UploadedImage
    fields = ('pk', 'img', 'dt_created')

my viewsets.py

from django.shortcuts import render
from rest_framework import viewsets
from imageUpload.serializers import UploadedImageSerializer
from imageUpload.models import UploadedImage


# Create your views here.

class UploadImageViewset(viewsets.ModelViewSet):
   queryset = UploadedImage.objects.all()
   serializer_class = UploadedImageSerializer
Mitesh
  • 1,544
  • 3
  • 13
  • 26
  • you can access uploaded files from `request.FILES` and the key of your body ['img'](remember to use multiform-data for files upload. From value of ['img'] you can loop through it to get the uploaded files – Linh Nguyen Jan 05 '21 at 09:59
  • I am sorry I am new django rest framework .. can you please elaborate you answer. Thanks – Mitesh Jan 07 '21 at 10:00

1 Answers1

0

you can do this

My models.py

from django.db import models

# Create your models here.


class UploadedImage(models.Model):
   img = models.ImageField('Uploaded Image', upload_to='images') # stores uploaded image
   dt_created = models.DateTimeField(auto_now_add=True, verbose_name='Created')
my serializers.py

from rest_framework import serializers
from .models import UploadedImage

class UploadImagesSerializer(serializers.Serializer):
    # here we limit how maximum the image is
    img = serializers.ImageField()
    img1 = serializers.ImageField(required=False)
    img2 = serializers.ImageField(required=False)
    
    def create(self, validated_data):
        create = YourModel(img=validated_data.get("img"))
        create.save()
        if validated_data.get("img1"):
            create = YourModel(img=validated_data.get("img1"))
            create.save()
        ....
        return create

class UploadedImageSerializer(serializers.ModelSerializer):
 class Meta:
    model = UploadedImage
    fields = ('pk', 'img', 'dt_created')

my viewsets.py

from django.shortcuts import render
from rest_framework import viewsets
from imageUpload.serializers import UploadedImageSerializer, UploadImagesSerializer
from imageUpload.models import UploadedImage
from rest_framework import parsers

# Create your views here.

class UploadImageViewset(viewsets.ModelViewSet):
   queryset = UploadedImage.objects.all()
   serializer_class = UploadedImageSerializer
   parser_class = [parsers.JSONParser, parsers.MultiPartParser,]
    
   def create(self, request):
       serializer = UploadImagesSerializer(data=request.data)
       if serializer.is_valid():
            serializer.save()
            return Response(...)
       return Response(...)