Django 数据Json化 报错

功能期望

根据前端用户选择的object名称,在数据库中查询对应模型,并将模型信息通过serialize方式转换为json格式数据返回至前端。

问题描述

'model' object is not iterable

 

cards = Cart.objects.filter( user_id=user )
        cartslist=[entry for entry in cards]
        data = {"cartslist": serializers.serialize('json',cartslist),
                'user': serializers.serialize("json",User.objects.filter( userAccount=token ))}

原始代码:

mlmodels = MLModel.objects.get(modelname = modelname)
response['list'] = json.loads(serializers.serialize("json", mlmodels))

问题解决

将查询数据的指令从get改为filter即可。
修改后的代码:

mlmodels = MLModel.objects.filter(modelname  =modelname)
response['list'] = json.loads(serializers.serialize("json", mlmodels))

原因分析

Django的serializers.serialize工具接受两个参数:
第一个是要序列化成为的数据格式,比如这里用到的 “json” 格式,第二个是要序列化的数据对象,可以是任何生成 Django 模型实例的迭代器,但一般使用QuerySet)。

get指令会返回单个对象,是不可迭代的 (not iterable);
filter指令会返回 QuerySet ,这是可迭代的 (iterable)。

参考资料

   [1] https://blog.csdn.net/qq_42950957/article/details/123092707
   [2] https://stackoverflow.com/questions/57206735/typeerror-object-of-type-cart-is-not-json-serializable

 

Django python

评论列表

暂无评论
您尚未登录,登录之后方可评论~ 登录 or 注册