2011-12-04 44 views
0

这是我的代码:Python/Django QuerySet到列表的字典?

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

other_objs是Object1对象的ManyToManyField。

当我执行此代码:

print other_objs[0] 

我没有得到一个OTHER_OBJ(这应该是一个字典),我得到过基于在OTHER_OBJ类的__unicode__方法的字符串。

如何获得other_obj字典而不仅仅是unicode字符串?

+0

你能解释一下你的问题吗?是'other_objs'多对多的关系吗? – juliomalegria

+0

对不起,是的。它是 – Andrew

+0

我还是不明白'dict'部分。你为什么需要'dict'? – juliomalegria

回答

4

other_objs[0]将查询的第一个元素,并不会是一个字典或字符串,但Django的模型对象,你可以访问属性像other_objs[0].myattr1,如果你想快译通,你可以要求使用objects.values_list specifc属性,然后创建一个字典在他们之中,例如

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

,或者您可以使用django serialization是要输出字典或JSON等,但我认为你只需要一个对象,而原来的查询是足够的。

0

当您做.all()时,您会收到(请参阅list)与您的Object1对象相关的对象。

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