功能期望
根据前端用户选择的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
|