DRF -django rest framework API для загрузки нескольких файлов через API

Я пытаюсь загрузить несколько изображений в один пост, и в настоящее время я могу загрузить только одно изображение и получить подтверждение через API. Как я могу сделать это для многократной загрузки?

Мой 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')

мой serializers.py

from rest_framework import serializers
from .models import UploadedImage


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

мой 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

person Mitesh    schedule 05.01.2021    source источник
comment
вы можете получить доступ к загруженным файлам из request.FILES и ключу вашего тела ['img'] (не забудьте использовать multiform-data для загрузки файлов. Из значения ['img'] вы можете пройти через него, чтобы получить загруженные файлы   -  person Linh Nguyen    schedule 05.01.2021
comment
Мне жаль, что я новый фреймворк для отдыха django. Не могли бы вы уточнить свой ответ. Спасибо   -  person Mitesh    schedule 07.01.2021


Ответы (1)


ты можешь это сделать

Мои модели.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')

мои представления.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(...)
person Kenedi Novriansyah    schedule 05.01.2021
comment
не могли бы вы уточнить функцию создания. Спасибо - person Mitesh; 05.01.2021
comment
как я могу добавить их в свою БД - person Mitesh; 05.01.2021
comment
я обновил свой ответ - person Kenedi Novriansyah; 06.01.2021
comment
извините, что усложняю вам задачу, но это не работает. Я получаю, что объект типа многоточие не сериализуется JSON при попытке получить через API - person Mitesh; 07.01.2021
comment
я обновил свой ответ - person Kenedi Novriansyah; 07.01.2021
comment
Это не работает - person Mitesh; 12.01.2021