在会话中存储未保存的模型实例

时间:2014-06-16 11:33:44

标签: python django serialization

我试图在django会话中存储几个未保存的模型条目。我希望它能像这样工作:

KEY = "FOOBAR"
def save_entry_to_session(new_entry, session):
    items = deserialize(session.get(KEY))
    items = append(new_entry)
    session.put(KEY, serialize(items))

我已经查看了https://docs.djangoproject.com/en/dev/topics/serialization/,但DeserializedObject并没有真正发挥作用,似乎是不必要的开销。有没有更好的方法来处理这个?泡菜还是不安全?

标准用例:在会话中一次保存多个项目 - >根据用户操作保存无,一个或多个项目。

2 个答案:

答案 0 :(得分:0)

我最终使用了djangos模型序列化器,deserializedObject没有障碍。在这种情况下,使用pickle会更容易和安全(因为它永远不会解析用户提交的数据)但我选择了更安全的选择,以避免以后冒险。

答案 1 :(得分:0)

自从你提出这个问题后我不知道这是否是一个新功能,但是现在我在Django 1.10中只能通过直接分配在会话中存储一个未保存的模型,它就会恢复出来很好没有任何额外的工作。只需instance = request.session['thing'],然后再<head>