Django和JSON - 其他属性

时间:2011-07-14 14:00:53

标签: jquery django json

我不明白为什么这样的代码会给每个项目对象赋予“has_children”属性:

items = Items.objects.filter(user=request.user).filter(parent=None)
for i in items:
    if i.get_children():
        i.has_children = True
    else:
        i.has_children = False
return render_to_response('items_base.html', {'items': items}, context_instance=RequestContext(request))

但是像这样的代码,即使没有引起任何错误,也不要做伎俩:

response = HttpResponse()
response['ContentType'] = "text/javascript"
try:
    items = Items.objects.get(id=id).get_children()    
    for i in items:
        if i.get_children():
            i.has_children = True
        else:
            i.has_children = False                
    response.write(serializers.serialize("json", items))
    return response
except ObjectDoesNotExist:
    return HttpResponse(u"There is no page like this")

有人对secuond代码有什么问题有任何建议吗?

1 个答案:

答案 0 :(得分:2)

Django序列化排除了实际上未定义为模型字段的任何属性。

你有一些选择:

  • 将Item对象转换为{fieldname: value}的词典,并使用json库对其进行序列化(或创建自定义JSONEncoder)。
  • 使用此'Full Serializer'代码序列化您的额外字段。