微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DRF -django rest framework API 多文件通过API上传

如何解决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

解决方法

你可以这样做

我的模型.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')

我的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(...)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。