我试图将数据库对象从一个视图传递到另一个视图。但是当我尝试使用SESSION实现这一点时,我得到的是“不是JSON可序列化”错误。
我的 Views.py :
def index(request):
listset = TheaterBase.objects.all()
request.session['s_listset'] = listset
def otherview(request):
result = request.session.get('s_listset')
如何在视图之间传递数据库对象?
提前致谢
答案 0 :(得分:1)
服务器会话只能存储JSON对象。您正在尝试存储一个复杂的Django QuerySet
对象,该对象自然不是JSON可序列化的。
相信我,即使它是,你也不想这样做。使用大量数据滥用服务器会话是不健康的。
答案 1 :(得分:0)
让我们假设您的TheaterBase类类似于下面(伪代码)
class TheaterBase:
field1 ...
fielld2 ...
-------
# a method to produce json serializable representation
def as_dict(self):
return {'field1': self.field1, 'fileld2': self.fielld2}
然后在你看来做
listset = [x.as_dict() for x in TheaterBase.objects.all()]
这里的问题是来自db查询的对象不是json serializable。上面的as_dict方法是构造该对象的json可序列化表示。
答案 2 :(得分:0)
您可以尝试使用django序列化程序
function saveDuplicate($data)
{
$data = [$data, $data];
$this->saveAll($data);
}