teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

ついき

2018/03/22 23:37

投稿

toritoritorina
toritoritorina

スコア972

answer CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  **get_context_data**メソッドはテンプレートへ渡す辞書を作成するメソッドで、ほとんどのクラスベースビューがこのメソッドを持っています。辞書をカスタマイズしたい場合、テンプレートに渡す変数を増やしたい場合に上書きすることがあります。
6
6
 
7
- **get**メソッドは全てのビューが持っており、一番初めに呼ばれるメソッドです。この中でget_context_dataやrender_to_responseメソッド等が呼ばれます。
7
+ **get**メソッドは全てのビューが持っており、一番初めに呼ばれるメソッドです(GETメソッドの場合に!)。この中でget_context_dataやrender_to_responseメソッド等が呼ばれます。
8
8
 
9
9
  getメソッドを上書きすることは少なく、基本的にはget_queryset等のピンポイントな部分を上書きして挙動をカスタマイズするのが多いです。
10
10
  質問者さんのコードですと、おそらく比較のためにわざとTemplateViewを使っていると思われますが、その処理の場合はListViewを使ってget_querysetメソッドだけ上書きするのが一般的かと思います。

2

にほんご

2018/03/22 23:37

投稿

toritoritorina
toritoritorina

スコア972

answer CHANGED
@@ -6,6 +6,6 @@
6
6
 
7
7
  **get**メソッドは全てのビューが持っており、一番初めに呼ばれるメソッドです。この中でget_context_dataやrender_to_responseメソッド等が呼ばれます。
8
8
 
9
- getメソッドを上書きすることは少なく、基本的にはget_queryset等のピンポイントな部分を上書きして挙動をカスタマイズするのが一般的です。
9
+ getメソッドを上書きすることは少なく、基本的にはget_queryset等のピンポイントな部分を上書きして挙動をカスタマイズするのが多いです。
10
10
  質問者さんのコードですと、おそらく比較のためにわざとTemplateViewを使っていると思われますが、その処理の場合はListViewを使ってget_querysetメソッドだけ上書きするのが一般的かと思います。
11
11
  元のコードだと、get_querysetメソッドがどこからも呼ばれない(TemplateViewでは呼ばれない)ので、キーワードによる絞り込みがされなくなりますね。

1

追記

2018/03/22 23:35

投稿

toritoritorina
toritoritorina

スコア972

answer CHANGED
@@ -1,10 +1,11 @@
1
1
  基本的に、各メソッドはクラスベースビュー内で勝手に呼ばれていきます。それらを自分で定義するときは、デフォルトの挙動を上書きしてカスタマイズしたい場合です。
2
2
 
3
- **get_queryset**メソッドはListViewで使われますが、モデルインスタンスの一覧を返すメソッドです。例えばfilterメソッドで絞り込んだり、柔軟に一覧を取得したい場合はget_querysetメソッドを上書きしてそのように書きます。
3
+ **get_queryset**メソッドは主にListViewで使われますが、モデルインスタンスの一覧を返すメソッドです。例えばfilterメソッドで絞り込んだり、柔軟に一覧を取得したい場合はget_querysetメソッドを上書きしてそのように書きます。
4
4
 
5
5
  **get_context_data**メソッドはテンプレートへ渡す辞書を作成するメソッドで、ほとんどのクラスベースビューがこのメソッドを持っています。辞書をカスタマイズしたい場合、テンプレートに渡す変数を増やしたい場合に上書きすることがあります。
6
6
 
7
7
  **get**メソッドは全てのビューが持っており、一番初めに呼ばれるメソッドです。この中でget_context_dataやrender_to_responseメソッド等が呼ばれます。
8
8
 
9
9
  getメソッドを上書きすることは少なく、基本的にはget_queryset等のピンポイントな部分を上書きして挙動をカスタマイズするのが一般的です。
10
- 質問者さんのコードですと、おそらくわざとTemplateViewを使っていると思われますが、ListViewを使ってget_querysetメソッドだけ上書きするのが一般的かと思います。
10
+ 質問者さんのコードですと、おそらく比較のためにわざとTemplateViewを使っていると思われますが、その処理の場合はListViewを使ってget_querysetメソッドだけ上書きするのが一般的かと思います。
11
+ 元のコードだと、get_querysetメソッドがどこからも呼ばれない(TemplateViewでは呼ばれない)ので、キーワードによる絞り込みがされなくなりますね。