2009年12月13日日曜日

Django python 可変数キーワード引数に辞書オブジェクトを渡す方法

 クリエメソッドの filter の照合パラメタをプログラムで作りたくなった。定数でも動くのだが、プログラムで書ければコードが短くすっきりする。
 いろいろやってみたが、
filter('%s_tag__name=key' % tag)
とかやってもうまくいかない。

 色々調べたがうまくいかず、一度あきらめたのだが、どうしても使いたくなり再度調べてみた。ネットで色々検索し、aptana で breakpoint を設定してあーだこーだと調べていくうちに
filter(**kwargs)
のアスタリスク二つが気になった。これって C で言うところのポインタのポインタ?

 結局、
filter(**{'%s_tag__name' % tag:key})
でうまくいった。

 この手の「呼び出す側で変数の頭にアスタリスクを二つ重ねる」は、Django のコードの中にごろごろしているし、こちらのページに動作の解説があったのだが、意味が理解できずに読み飛ばしてしまった。

 答えは目の前に転がっていたのに...。

 修行が足りん。

0 件のコメント:

コメントを投稿