RSS

generic viewのextra_context (2)

間違っていた話。

    付与されたタグ:
  • Django

extra_context に QuerySet渡すと静的に解決されて困ったな、という話ですがwww.lingr.com/room/django-ja/archives/2007/09/19 で指摘されているようにlambdaで囲うのが正解でした。折角なのでソースを読む。

  1. あたり前の話として dictionary は静的に値が決まる。つまり値で関数を呼べばその結果が入る。
  2. じゃあなんでlambdaならいいんだよという話は django/views/generic/list_datail.py で extra_context の値を RequestContextに渡すときに callable な物はその場で呼び出した値を渡すから。
  3. 以上が結論。あ、でも関数を渡せたとしても関数自体は静的に決まるから…、これはまた考えよう。

ドキュメントを斜め読みしないでもうちょっとソースを読もう…。