Django:TypeError:<muzejskipredmet:>不是JSON可序列化的</muzejskipredmet:>

时间:2013-11-24 11:51:12

标签: python django json

我有以下观点(有更多的代码,在获取或发布时该怎么做等,但它与问题无关):

@login_required
def muzejskipredmetadd(request):
    if not 'predmet' in request.session:
        request.session['predmet'] = MuzejskiPredmet()
    tipoviPredmeta = TipPredmeta.objects.all()
    return render_to_response("azuriranje/muzejskiPredmetForm.html",
                              {'predmet': predmet, 'tipoviPredmeta': tipoviPredmeta},
                              context_instance=RequestContext(request))

我在标题中收到错误。现在,Definitive指南指出会话字典接受任何能够被pickle的Python对象。虽然我的MuzejskiPredmet类扩展了django.models.Model但我不知道这是否足以让它被认为是“pickleable”。

我一直在网上阅读,虽然有很多关于具有“原始”字段的简单类的例子,但是当我有ForeignKey字段或{{{I}时,我不知道该怎么做1}}字段。如何与酸洗方面的人合作?

所以这段代码背后的想法是我想让我的用户能够从这个表单跳转到为组合框添加新对象(其中包含与foreignkey相关的对象)。一旦用户创建了相关对象(在新表单中),我想回到这个,但我不想得到一个清晰的表单,而是用户在他去创建新条目之前留下的表单。组合框,因此需要session属性。请注意,我甚至不确定这是否有效,也不是这是处理此问题的正确方法。

回溯:

ManyToMany

1 个答案:

答案 0 :(得分:0)

我不确定对象代表什么,但你可以尝试:

@login_required
def muzejskipredmetadd(request):
    if not 'predmet' in request.session:
        predmet = MuzejskiPredmet()
        predmet.save()
        request.session['predmet'] = predmet.pk
    else:
        predmet = MuzejskiPremet.objects.get(pk = request.session['predmet'])
    tipoviPredmeta = TipPredmeta.objects.all()
    return render_to_response("azuriranje/muzejskiPredmetForm.html",
                              {'predmet': predmet, 'tipoviPredmeta': tipoviPredmeta},
                              context_instance=RequestContext(request))

这会将predmet对象保存到数据库,并将其主键值存储到会话中。如果主键已在会话中,则将检索正确的对象。

这个问题可能是很多这些对象都可能被创建和存储,因此可能需要一个垃圾收集例程来删除旧对象。