Djangoアプリケーションにおいて動的に複数選択可能なチェックボックスをどのように作成すれば良いのかわからず悩んでいます。
あるグループに所属しているしている人(coworkerと変数定義しています)一覧に合わせてチェックボックスを用意したいと考えています。
理想の見た目は以下の感じです。
□ 山田太郎
□ 鈴木一郎
□ 田中二郎
以下続く‥
urlsから取得してきたgroup.idにひも付けて、そのグループに所属しているUserオブジェクトを取得し、フォームを生成するというのをviewsで定義したいのですが、どのようにすれば良いのかわかっていません。formsではオブジェクト数を定義できない(グループによって動的にUserオブジェクトの数が変化するため)ので、viewsで定義して、フォームに引き渡してあげるのでしょうが、そのやり方がよくわかりません‥
わかる方いればご教授いただけると幸いです!
以下、forms.pyとviews.pyの該当部分のソースコードになります。
forms
1class CoworkerCheckForm(forms.Form): 2 """Coworkerのチェックボックスフォーム""" 3 def __init__(self, user, group, coworkers=[],*args, **kwargs): 4 check_box = forms.MultipleChoiceField(choices=coworkers, widget=forms.CheckboxSelectMultiple())
views
1def group(request, group_id): 2 group = Group.objects.get(id=group_id) 3 coworkers = group.owner.all() 4 if request.method == 'POST': 5 form = CoworkerCheckForm(request.user, group, coworkers, request.POST) 6 if form.is_valid(): 7 8 return redirect('hr:review',form) 9 else: 10 form = CoworkerCheckForm(request.user, group) 11 12 return render(request, 'hr/group.html', {'form':form }