Python / Django QuerySet列表中的dicts?

时间:2011-12-04 00:49:44

标签: python django

这是我的代码:

obj = Object1.objects.get(pk=1)
other_objs = ob1.other_objs.all()

other_objs是Object1对象上的ManyToManyField。

执行此代码时:

print other_objs[0]

我没有得到other_obj(应该是dict),我从other_obj类中的__unicode__方法得到一个字符串。

如何获取other_obj dict而不仅仅是unicode字符串?

2 个答案:

答案 0 :(得分:4)

other_objs[0]将是查询的第一个元素,不会是dict或字符串,而是django模型对象,你可以访问像other_objs[0].myattr1这样的属性,如果你想要dict,你可以要求具体的属性使用objects.values_list,然后从中创建一个词典,例如

attrs = ['id', 'attr1']
values = Object1.objects.values_list(attrs)[0]
obj_dict = dict(zip(attrs, values))

或者您可以使用django serialization是否要输出dict或json等,但我认为您只需要一个对象,原始查询就足够了。

答案 1 :(得分:0)

当您执行.all()时,您将获得与queryset对象相关的对象list(请参阅Object1)。

所以,当你other_objs[0]时,你得到了第一个相关的对象。然后,当您打印它时,它会调用其__unicode__方法来实际打印对象。