Djangoを使ってフォームの作成をしているのですが、可変長のフォームをどのように作ればよいのかわかりません。
forms.py
の中にチェックボックスフォームを作り、views.py
でそのフォームの内容を書き換えられるようにしています。
具体的には、views.py
の中で、質問のリストを作り、Questionクラスをリストにすることで実現しようとしています。
しかし、クラスをリストにして渡すとチェックボックスがうまく表示されません。
このような場合、どのように設計するのが良いのでしょうか。
forms.py
python
1 2 3from django import forms 4 5class Question(forms.Form): 6 like = forms.BooleanField( # チェックボックスのフィールド 7 required=False, 8 disabled=False, 9 label='like', 10 ) 11 12 want = forms.BooleanField( # 2つめのチェックボックス 13 required=False, 14 disabled=False, 15 label='want', 16 ) 17 18 def __init__(self, food_name): # 質問(?)を保存しておく 19 self.food_name = food_name
views.py
python
1 2from django.shortcuts import render 3from .forms import Question 4 5 6def common_subjects(request): 7 food_list = ['お寿司', 'カレー', 'ラーメン', 'チャーハン'] # ここが質問のリスト。追加することで自動的に質問数が増えるようにしたい 8 questions = [] 9 for food in food_list: 10 questions.append(Question(food)) 11 return render(request, 'food/index.html', { 12 'questions': questions, 13 })
index.html
html
1<html> 2 3<body> 4 <form action="" method="post"> 5 {% csrf_token %} 6 <table border="1"> 7 <tr> 8 <th>食べ物</th> 9 <th>好き</th> 10 <th>食べたい</th> 11 </tr> 12 {% for question in questions %} 13 <tr> 14 <td>{{ question.food_name }}</td> 15 <td>{{ question.like }}</td> 16 <td>{{ question.wants }}</td> 17 </tr> 18 {% endfor %} 19 </table> 20 <input type="submit" value="送信"> 21 </form> 22</body> 23 24</html>
実行結果
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/29 03:32
2019/10/29 04:24
2019/10/29 05:02
2019/10/30 05:39