Django & Vue 项目踩坑记:‘Model‘ object is not iterable
项目背景: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
更多推荐
已为社区贡献1条内容
所有评论(0)