【问题标题】:Django and JSON - additional attributesDjango 和 JSON - 附加属性
【发布时间】:2011-10-05 09:09:47
【问题描述】:

我不明白为什么这样的代码会为每个项目对象赋予“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")

有人对第二个代码有什么问题有任何建议吗?

【问题讨论】:

    标签: jquery django json


    【解决方案1】:

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

    你有一些选择:

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

    【讨论】:

    • 是的。工作正常。我选择了第二个选项。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2019-07-22
    相关资源
    最近更新 更多