Django & Vue 项目踩坑记:‘Model‘ object is not iterable

功能期望

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

问题描述

'model' object is not iterable

原始代码:

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://stackoverflow.com/questions/56374741/django-model-object-is-not-iterable
[2] Django官方文档:序列化 serializers

你可能感兴趣的:(Django,&,Vue,踩坑记,django,vue.js,python)