通过Ajax在Json词典中返回多个QuerySet

时间:2013-09-24 04:59:37

标签: python ajax django

我通过以下代码

从我的views.py返回我的模型作为字典
data = serializers.serialize('json', response_dict)
return HttpResponse(data, mimetype='application/javascript')

问题是我在对象中有一个外键,我想要外键所指向的对象的实际值,但我只是得到了ID。我想尝试返回ID的相应对象。我尝试过的一种方法是使用以下代码返回一个单独的列表,其中包含每个外键的相应对象,但它不起作用。

    #original dictionary that returns id values for foreign keys
data1 = serializers.serialize('json', response_dict)
    #The corresponding objects from the foreign key table stored in a parallel list of equal length to response_dict
data2 = serializers.serialize('json', other_list)

data = simplejson.dumps([data1, data2])
#return json dump to template via ajax 
return HttpResponse(data, mimetype='application/javascript')

如何返回初始字典和列表以及外键的相应值?我也对一个更好的方法开放,它获取每个外键的实际对象值

2 个答案:

答案 0 :(得分:0)

我认为你所寻找的是一种序列化关系的方法。

看看:

https://code.google.com/p/wadofstuff/wiki/DjangoFullSerializers#Relations

另请注意,从Django 1.5开始,不推荐使用simplejson:

https://code.djangoproject.com/ticket/18023#comment:10

我创建了一个版本的Wad of stuff序列化程序,它与Django 1.5一起使用:

https://github.com/kolben/wadofstuff

答案 1 :(得分:0)

最后在我的Django序列化程序中,我设置了use_natural_keys = True,并为我想看到的值的表定义了自然键。请参阅Django文档中的教程:

https://docs.djangoproject.com/en/dev/topics/serialization/#natural-keys

此解决方案适用于我的特定目的,但一般情况有限。我将sunn0的答案标记为已接受的答案,因为此链接中的'wadofstuff'序列化器似乎提供了更广泛和通用的解决方案。