栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Django REST批量发布/发布JSON对象数组

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django REST批量发布/发布JSON对象数组

有两种解决方案来解决您的问题:

第一个解决方案是覆盖
.create()
视图的方法

默认情况下,django rest框架假定您将其传递给单个对象。要考虑将其传递给对象列表的可能性,可以按以下方式重写它:

def create(self, request, pk=None, company_pk=None, project_pk=None):    is_many = True if isinstance(request.data, list) else False    serializer = self.get_serializer(data=request.data, many=is_many)    serializer.is_valid(raise_exception=True)    self.perform_create(serializer)    headers = self.get_success_headers(serializer.data)    return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)

现在,您的视图将处理

POST
数据中的单个对象以及对象列表。

第二种解决方案是使用第三方程序包

django-rest-framework-bulk
提供上述功能以及其他功能(例如,批量更新)。您可以签出并确定它是否满足您的需求。

更新:基于函数的视图的解决方案

为了使其与基于函数的视图一起使用,方法是相似的:

@api_view(['POST'])def post_calculation(request):    if request.method == 'POST':        is_many = True if isinstance(request.data, list) else False        # JSON to serializer object        serializer = SearchRequestSerializer(data=request.data, many=is_many)        if (serializer.is_valid() is False):  # use `is False` syntax rather than `== False` in Python return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)        serializer.save()        #-- do some processing stuff here ---        return Response(serializer.data)

不要

.create()
直接调用方法,
.save()
而是使用。另外,
many=False
在序列化程序上使用时,可以在下找到创建的实例
serializer.instance
。我不确定如何获取已创建实例的列表。您可以尝试相同的方法
serializer.instance
。如果它不起作用,请尝试查找如何获得它。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/383028.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号