django - DRF -django rest framework APi 多文件上传通过API
问题描述
我正在尝试将多张图片上传到一个帖子,目前我只能上传一张图片并通过 API 获得确认。我怎样才能使它多上传?
我的模型.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')
我的序列化程序.py
from rest_framework import serializers
from .models import UploadedImage
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
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')
我的视图集.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(...)
推荐阅读
- python - 如何以优雅的方式用 z3py 解开爱因斯坦之谜?
- flutter - 如何知道导航器中有多少视图?
- reactjs - Handle 改变formik中的对象。使用 setFieldValue
- excel - 格式错误导出到列表标签中的 excel
- node.js - 我们可以从 node js 应用程序或命令提示符获取电子版本的 vscode
- asp.net-core - 指定列时 ASP.NET DevExtreme Datagrid 中的 TypeLoadException
- angular - 复选框以角度的反应形式全部检查
- excel - Excel:A列中的最小值,而B列不为空
- java - GRPC重连并保持连接
- javascript - 将 resolve() 添加到 vuex 操作会中断组件中的数据加载