You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中使用Postman实现POST批量创建数据的问题求助

Django REST 批量创建用户解决方案

问题根源

固定设置many=True会导致单个用户的字典格式请求验证失败,不设置则无法处理批量列表请求。需要让视图动态适配两种请求格式。

修改后的POST视图代码

更新views.py中users_list函数的POST分支:

elif request.method == 'POST':
    users_data = JSONParser().parse(request)
    # 自动判断是否为批量请求
    is_batch_request = isinstance(users_data, list)
    users_serializer = UsersSerializer(data=users_data, many=is_batch_request)
    
    if users_serializer.is_valid():
        users_serializer.save()
        # 批量请求返回列表,单个请求返回字典,适配JsonResponse的safe参数
        return JsonResponse(users_serializer.data, safe=not is_batch_request, status=status.HTTP_201_CREATED)
    return JsonResponse(users_serializer.errors, status=status.HTTP_400_BAD_REQUEST)

关键改动说明

  • 动态切换批量模式:通过isinstance(users_data, list)判断请求数据类型,自动为序列化器设置many参数,同时兼容单个和批量请求。
  • 响应格式适配:设置safe=not is_batch_request,解决Django默认不允许JsonResponse直接返回列表的限制,保证两种请求的响应都能正确序列化。
  • 原生批量创建支持:DRF的ModelSerializer在many=True时会自动处理批量数据的保存,无需手动编写循环逻辑。

Postman 请求示例

单个用户创建请求

请求体(JSON格式):

{
    "user": "Jonibek",
    "function": "Full Stack Dev",
    "department": "Engineering",
    "logon": "2024-05-20"
}

批量用户创建请求

请求体(JSON格式):

[
    {
        "user": "Alice",
        "function": "QA",
        "department": "Testing",
        "logon": "2024-05-20"
    },
    {
        "user": "Bob",
        "function": "DevOps",
        "department": "Infrastructure",
        "logon": "2024-05-21"
    }
]

注意:必须将请求头Content-Type设置为application/json,否则无法正确解析请求数据。

内容的提问来源于stack exchange,提问作者Jonibek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 04:27:27