您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页Django Rest Framework 多文件上传

Django Rest Framework 多文件上传

来源:二三娱乐

多文件上传是常用需求的一个,但是DRF我是找半天都没有找到,我....

修改如下
# model

class Image(BaseModel):
    user = models.ForeignKey(User, verbose_name='用户')
    url = models.ImageField(upload_to='static/images/%Y/%m/%d', null=False, blank=False, verbose_name='图片url')

    class Meta:
        verbose_name = '图片'
        verbose_name_plural = verbose_name
#serializer

class BlogImgSerializer(serializers.ModelSerializer):
    user = serializers.HiddenField(default=serializers.CurrentUserDefault())

    def __str__(self):
        return self.url

    class Meta:
        model = Image
        fields = ('user', 'url')


class BlogListImgSerializer(serializers.Serializer):
    imgs = serializers.ListField(
        child=serializers.FileField(max_length=100000,
                                    allow_empty_file=False,
                                    use_url=True),write_only=True
    )
    blog_imgs = serializers.ListField(
        child=serializers.CharField(max_length=1000,),read_only=True
    )

    def create(self, validated_data):
        imgs = validated_data.get('imgs')
        images = []
        for index, url in enumerate(imgs):
            image = Image.objects.create(url=url, user=User.objects.get(id=self.context['request'].user.id))
            blog = BlogImgSerializer(image, context=self.context)
            images.append(blog.data['url'])
        return {'blog_imgs':images}
# viewset

class BlogImgViewSet(mixins.CreateModelMixin, viewsets.GenericViewSet):
    '''
    create:
    创建图片
    '''

    authentication_classes = (SessionAuthentication, JSONWebTokenAuthentication)
    queryset = Image.objects.all()
    serializer_class = BlogListImgSerializer

    parser_classes = (MultiPartParser, FileUploadParser,)

    def get_permissions(self):
        permission_classes = [IsAuthenticated, IsOwnerOrReadOnly]
        return [premission() for premission in permission_classes]

酱紫就可以了

结果
QQ截图20180420111026.png

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

热门图文

Copyright © 2019-2025 yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务