我不明白为什么这样的代码会给每个项目对象赋予“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代码有什么问题有任何建议吗?
答案 0 :(得分:2)
Django序列化排除了实际上未定义为模型字段的任何属性。
你有一些选择:
{fieldname: value}
的词典,并使用json
库对其进行序列化(或创建自定义JSONEncoder)。