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

Django REST Framework序列化器无故返回null,数据库有数据仍为空如何解决

问题根因

你代码里存在两个核心错误:

  • 序列化器参数使用错误:将ORM查询得到的实例集传给了仅用于反序列化的data参数。序列化已有模型实例时,需要传入instance参数,仅在接收前端传入数据、需要写入数据库的反序列化场景下才需要使用data参数、调用is_valid()做校验。
  • 返回体未包含业务数据:你构造的返回字典中仅声明了status字段,没有将序列化后的产品数据放入返回结果,接口自然不会返回产品相关内容。

你之前遇到的断言错误,是DRF针对反序列化场景的限制:使用data参数初始化序列化器后,必须先调用is_valid()才能访问序列化结果,而你传入的是ORM实例集,本身不符合反序列化的入参格式要求,所以即便调用is_valid()也会校验失败,拿不到有效数据。

修正后的视图代码

@api_view(['GET'])
def get_data(request):  
    product_data = Product.objects.all()
    # 序列化场景传instance参数,不需要调用is_valid
    serialized_data = ProductSerializer(instance=product_data, many=True)
    return Response({
        "status": "success",
        "data": serialized_data.data
    })

序列化器代码无需修改。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:54:03