2011-12-04 86 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__方法來實際打印對象。