为了账号安全,请及时绑定邮箱和手机立即绑定

DeliciousPie:是否可以在批量请求中发布多个文件

DeliciousPie:是否可以在批量请求中发布多个文件

慕尼黑8549860 2021-03-12 14:08:06
我想发表大量帖子。问题在于每个项目都需要一张图像(甚至可能只有几张)。是否可以通过批量请求做到这一点?该模型:class CollageItem(models.Model):  url = models.URLField(null = True)  image = models.FileField(upload_to = 'i')  thumbnail = models.FileField(upload_to = 't')和TastyPie对象:class CollageItemResource(ModelResource):  image = fields.FileField(attribute = 'image', null = True, blank = true)  thumbnail = fields.FileField(attribute = 'thumbnail', null = True, blank = true)  class Meta:    queryset = CollageItem.objects.all(    resource_name = "collage_item"我可以使用批量请求发布多张图片,还是应该回复到单个帖子?
查看完整描述

2 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

我走了自定义序列化器之路:


class FormPostSerializer(Serializer):

    formats = ['form']

    content_types = {

        'form': 'multipart/form-data',

    }


    def from_form(self, content):

        try:

            dict = cgi.parse_multipart(StringIO(content), self.form_boundary)

        except Exception, e:

            raise e

        for key, value in dict.iteritems():

            dict[key] = value[0] if len(value) > 0 else None

        return dict

并且是需要发布多个文件的所有资源的基类:


class FormResource(ModelResource):

    class Meta:

        serializer = FormPostSerializer()


    def dispatch(self, request_type, request, **kwargs):

        cth = request.META.get('CONTENT_TYPE') or \

            request.META.get('Content-type') or \

            self._meta.serializer.content_types['json']

        self.Meta.serializer.form_boundary = self.parse_content_type_header(cth)

        return super(FormResource, self).dispatch(request_type, request, **kwargs)


    def parse_content_type_header(self, content_type_header):

        parts = cgi.parse_header(content_type_header)

        rv = {}

        for p in parts:

            if isinstance(p, dict):

                rv = dict(rv.items() + p.items())

        return rv

当然,序列化程序需要一些其他处理(例如,UTF8字段),我从答案中省略了这些处理。


查看完整回答
反对 回复 2021-03-30
?
MYYA

TA贡献1868条经验 获得超4个赞

当然可以!根据图像的大小,您必须决定上载它们是否花费太长时间,但是有可能。根据好吃的文档,可以通过Patch选项进行批量创建和更新。



查看完整回答
反对 回复 2021-03-30
  • 2 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信