質問編集履歴
1
コードを追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -92,11 +92,51 @@
|
|
92
92
|
|
93
93
|
・上記表示用リストをテンプレートでレンダリングして表示する。
|
94
94
|
|
95
|
+
考えてみたコードは、下記のとおりです。
|
96
|
+
|
97
|
+
```python
|
98
|
+
|
99
|
+
#views.py
|
100
|
+
|
101
|
+
def index(request):
|
102
|
+
|
103
|
+
latest_question_list = Question.objects.order_by('-datetime')[:10] #直近10個の質問に絞り込み
|
104
|
+
|
105
|
+
questionIdList = [] #上記10個の質問のIDを格納するリスト
|
106
|
+
|
107
|
+
for question in latest_question_list:
|
108
|
+
|
109
|
+
questionIdList.append(question.id)
|
110
|
+
|
111
|
+
displayList = [] #レンダリング用のリスト
|
112
|
+
|
113
|
+
for id in questionIdList:
|
114
|
+
|
115
|
+
contentListForQuestion = [] #質問毎に要素を格納するためのリスト
|
116
|
+
|
117
|
+
question = Question.objects.get(id=id) #IDから質問を呼び出す
|
118
|
+
|
119
|
+
contentListForQuestion.append(question.title) #質問タイトルを格納
|
120
|
+
|
121
|
+
contentListForQuestion.append(question.content) #質問内容を格納
|
122
|
+
|
123
|
+
contentListForQuestion.append(question.votes) #質問の評価を格納
|
124
|
+
|
125
|
+
contentListForQuestion.append(question.datetime) #質問日時を格納
|
126
|
+
|
127
|
+
contentListForQuestion.append(len(Answer.objects.filter(question=id)))) #質問に対する回答投稿数を格納
|
128
|
+
|
129
|
+
displayList.append(contentListForQuestion)
|
130
|
+
|
131
|
+
```
|
132
|
+
|
133
|
+
|
134
|
+
|
95
135
|
|
96
136
|
|
97
137
|
上記2つの方法のうち、1つ目は簡単に実装できると思います。しかし、なんとなく、スマートではないと思います。何らかのエラーで、実際の回答数と不整合が生じるリスクもあるので、嫌な感じもします。
|
98
138
|
|
99
|
-
そのため、私は、2つ目の方法の方が本来あるべき方法なのではないかと思います。ただ、Questionモデルのデータのみであれば、単純に表示用のリストを作成することができたのに、複数のモデルからデータを引っ張ってくるために、急に複雑になってしまうので、もっとシンプルな方法が存在するのではないかと思いました。
|
139
|
+
そのため、私は、2つ目の方法の方が本来あるべき方法なのではないかと思います。ただ、Questionモデルのデータのみであれば、単純に表示用のリストを作成することができたのに、複数のモデルからデータを引っ張ってくるために、上記のように急に複雑になってしまうので、もっとシンプルな方法が存在するのではないかと思いました。
|
100
140
|
|
101
141
|
|
102
142
|
|