2011-12-04 3 views
0

これは私のコードです:Python/Django dictsのリストを表示するQuerySet?

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

other_objsは、オブジェクト1のオブジェクト上のManyToManyFieldです。私はこのコードを実行

print other_objs[0] 

を私は(辞書でなければなりません)OTHER_OBJを得ることはありません、私はOTHER_OBJクラスの__unicode__メソッドをオフに基づいて文字列を取得します。

ユニコード文字列ではなくother_obj辞書をどのように取得できますか?あなたはobjects.values_listを使用してspecifc属性を求めることができるのdict、その後辞書を作成したい場合は

+0

あなたはあなたの質問をよりよく説明できますか? 'other_objs'は多対多の関係ですか? – juliomalegria

+0

申し訳ありません。それは – Andrew

+0

です私はまだ 'dict'部分を理解していません。なぜあなたは 'dict'を必要としますか? – juliomalegria

答えて

4

other_objs[0]は、あなたがother_objs[0].myattr1などの属性にアクセスすることができ、クエリの最初の要素となり、辞書や文字列が、Djangoのモデルオブジェクトではありませんそれらから

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

か、django serializationを使用することができますが、出力辞書やJSONなどにしたいですが、私はあなただけのオブジェクトが必要だと思うし、元のクエリが十分にあります。

0

.all()を実行すると、Object1オブジェクトに関連するオブジェクトの(listと表示されます)が表示されます。

したがって、other_objs[0]を実行すると、最初に関連するオブジェクトが取得されます。そして、あなたがそれを印刷すると、そのオブジェクトを実際に印刷するために__unicode__メソッドを呼び出します。

関連する問題