当我们企图将数据库中获得的对象或者是对象集合放入html页面中展示时会出现此错误:
原因是: django通过模型获得的数据库对象不是普通的对象,而是与数据库操作关联的Query对象,内部没用序列化,所以,当我们将该对象放入session或者是context中会被错。
解决办法: 将要查询的属性拿出来,在做封装,可以新建一个字典或是列表或是对象,再把属性放入其中,然后将此传入html页面进行渲染。
我的解决办法是放入list中:
searchBooksName = [] // 新建列表
for book in writer.books.all(): // 获得所有的查询对象
searchBooksName.append(book.bookname) // 取出属性,放入列表中
request.session['books'] = searchBooksName // 将列表传入session中
request.session['msg1'] = '查询成功,书籍如下'